Git stash 명령어
※ git stash : branch에서 작업하던 내용을 stack에 잠시 저장해 두는 것입니다.
A branch에서 작업하던 내용을 stash 명령어를 이용하여 stack에 넣어둔 후, B branch를 checkout하여 작업하고, 다시 A branch로 돌아와 작업을 이어서 진행할 때 유용합니다.
- 사용방법 (현재 수정 또는 추가한 파일이 있다는 가정하에 진행합니다.)
// 기본
> git stash
// 추적중이지 않은 파일까지 모두 저장.(추측으로는 staged되어 있는 파일까지 포함한단 뜻인 것 같음)
> git stash -u
* 추적중이지 않은 파일이 뜻하는 것은 아래 이미지와 함께 설명드리겠습니다. (글쓴이의 추측입니다.)

위 이미지를 보면 branch를 바꾸려 할 때 config-local.xml 파일이 수정되었으니 커밋 또는 stash영역에 넣은 후 진행하라고 뜨는데, 이 파일은 ignore하도록 설정을 해둔 상태로 git status를 했을 때 수정목록에 뜨지 않습니다(추적이 되지 않는 상태). 이때 git stash -u를 하면 해당 파일까지 stash영역에 넣을 수 있습니다.
그냥 git stash를 했을 경우 위에 이미지에 보이는 것처럼 change된 것이 없다고 뜹니다.
- git stash 관련 명령어
// stash 상태의 목록 보기
> git stash list
// stash를 꺼내와 적용할 수 있습니다.
> git stash apply
// stash할 때의 상태 그대로, staged상태까지 그대로 적용됩니다.
$ git stash apply --index
// 스택에서 제거(가장 최근에 stash한 항목이 먼저 drop됩니다.)
> git stash drop
// apply 후 drop
$ git stash pop
# Stash할 당시의 커밋을 Checkout한 후 새로운 브랜치를 만들고, 여기에 stash를 적용함.
> git stash branch 브랜치명
> git stash branch 브랜치명 : stash해놓고, 작업을 계속 하다가 stash를 적용하려고 하면 충돌이 발생할 수도 있다. 이를 방지하기 위해 먼저 git stash branch명령어로 테스트를 해보고, stash를 삭제하면 된다.
(써봐야 알 듯...아직 사용해 본 적이 없습니다.)