Working Directory
에서 수정한 내용을 임시저장 해주는 기능 git stash
# 현재 working directory에서 작업중인 모든 파일을 임시저장소에 저장 합니다.
# 깃내역에는 커밋이 생기지만, 다시 꺼내올 때 커밋이 삭제 됩니다.
git stash pop
# 임시 저장소에 저장된 파일들을 꺼내오고, 임시저장소에 내용을 삭제합니다
git stash -u
# untracked files도 임시저장소에 같이 저장합니다.
git stash -m "메세지"
# 임시저장소에 저장할 때, 메세지를 덧 붙여서 저장합니다.
git stash list
# 임시저장소에 저장된 파일들의 정보 확인
git stash show
# 임시저장소에 저장된 파일의 수정사항을 확인 해줍니다.
# 임시저장소에 있는 파일을 수정 했을 때, 원본과 수정본의 차이점을 보여줌 ( git diff와 비슷 )
git stash apply
# 임시저장소에 저장된 내용을 꺼내온다.
# [index]를 입력하지 않으면, stash@{0}을 꺼내온다.
# 꺼내온 내용은 저장소에 남아있다.
git stash drop
# 임시저장소에 저장된 내용을 꺼내오지 않고, 삭제한다.
git stash pop --index
# 스테이지 영역에 있는 정보들을 가져올 때, Index 정보도 같이 가져옵니다.
git stash clear
# 임시저장소에 저장된 모든 정보 삭제
git stash branch stash-branch
# 임시저장소에 저장된 내용을, stash-branch를 만들어 저장합니다
❗ GIT에서 관리되고 있는 파일만 임시저장 할 수 있다.
- Untracked files 상태는 불가
- -u 옵션을 사용한다면 Untracked files 파일도 임시저장소에 저장할 수 있다.
❗ 임시저장소에 저장된 정보의 순서이다.
stash영역에 파일들이 저장될 때, 각자 {숫자}순번을 갖고 저장된다.
1. GIT
이 관리중인 work.txt
파일과 temp.txt
파일을 1차례 수정하고
work.txt 파일만 인덱스 영역에 올립니다.
2. 두 개의 파일을 임시저장(Stash) 합니다.
2.1 깃 내역에는 2개의 커밋이 추가 되었지만, 실제로는 임시로 커밋된 것 입니다.
3. status 영역 확인 : 최종 커밋으로부터 변경된 내역이 없음
4. 새로운 파일 init.txt
을 추가하고 커밋합니다.
5. 임시저장한 2개의 파일을 다시 꺼내오고 status
와 commit
을 확인 합니다.
결론. stash
임시저장소에 파일을 넣어두고, working directory
에서 어떤 작업과 커밋을
기록해도 stash
임시저장소에 있는 파일들은 아무런 영향을 받지 않습니다.
중요한 작업을 하는 도중에 급하게 다른 작업을 가져와서 커밋해야 할 때, 중요한 작업을
임시저장소에 저장해두고 급한 다른 작업부터 처리 한 후, 임시저장소에서 다시 꺼내와서
작업을 이어나갈 수 있습니다.
한가지 중요한점은, work.txt
파일은 stash
영역에 저장하기 전에 인덱스 영역에 올려놓은
상태였는데, stash
영역에서 꺼내올 때, index 영역에 상주해있지 않습니다.
stash
명령어만 사용 했을 때는 영역에 대한 복원까지는 해주지 않는다는 것을 알 수 있습니다.
1. stash -u
옵션을 사용해서, 관리된 적 없는 파일을 임시저장소에 저장
1. 수정하기전 init.txt
파일을 임시저장소에 저장
2. 임시저장소에 저장한 init.txt
파일을 수정하고, stash
영역에 다시 저장하면
생기는 변화를 확인
결론. 임시저장소에 저장한 파일을 작업영역에서 수정하고 다시 임시저장소에 저장하면
working directory
작업영역에는 사라져있다가, stash
임시영역에서 가져올 때
수정한 내용이 추가 됩니다.
1. index.txt
파일을 수정하고 Apply
동작 확인
2. index.txt
파일을 수정하고 Drop
동작 확인
결론. apply는 임시저장소에서 정보를 가져오면서 정보를 삭제하지 않지만, drop은 정보자체를 삭제