- 브랜치의 작업을 다 마치지 못한 상태에서 다른 브랜치의 작업을 해야하는 경우가 있을 수 있다.
- commit 하기도 애매한 상황이고, commit 하지 못하면 checkout 을 못하기 때문에 브랜치를 활발히 사용하는 경우 이 명령어가 유용할 수 있다.
git stash
- test1 branch 에서 file1.txt 를 수정했다.
- commit 하지 않고 master branch 로 checkout 한다면 그대로 수정된 내용이 끌고 가지는데, 이는 master branch에 영향을 미치는 상황이 될 수 있다. (직접해보셈..)
- commit 하기 애매하고, 이 때문에 checkout 이 어려운 상황 !
- 작업한 내용을 stash 를 통해 감출 수 있다.
git stash
- test1 브랜치 working directory 와 인덱스 작업중이던 변경 사항들이 save 되었다.
git status
- 브랜치의 변경 내용이 안나온다. checkout 가능
- 다시 감춰놨던 내용을 복원 하려면
git stash apply
- 감춰놨던 내용이 다시 살아나는 것을 확인 할 수 있다.
git stash list
- 감춰놨던 내용 list 로 확인 가능
- 예를들어 reset --hard 로 초기 버전으로 넘어갔다가 다시 stash 를 통해 저장되어있던 버전을 불러 올 수 있다 !
- 명시적으로 stash 내용을 삭제하지 않으면 기록이 남아있음.
- 여러 stash 를 저장할 수 있음.
git stash drop
git stash apply; stash drop
-
귀찮으면 동시에
-
주의 사항
- git stash 라고 하는 것은 최소한 버전관리를 하고 있는 파일에 대해서만 적용된다.
- git add 한 파일 ! 즉, Tracked 파일만 저장하기 가능