현재 브랜치에서 아직 완료하지 않은 커밋이 있는데 다른 브랜치로 가야하는 경우가 있다. 커밋하기엔 애매하고 지우자니 아까운 수정사항들을 stack에 잠시 보관해두고 필요할 때 꺼내쓸 수 있다. 또한, 실수로 다른 브랜치에서 작업했던 사항들을 stack에 보관하고 원하는 브랜치로 이동해 수정사항들을 꺼내 반영할 수 있다.
현재 workind directory에 있는 수정사항을 stack에 저장한다.
git stash
git stash save //같은 역할을 한다
가장 최근 커밋을 기준으로 그 이후의 수정사항들을 되돌리는 역할을 한다.
실행하면 working directory는 깨끗해진다.
staged됐는지의 여부도 저장할 수 있다.
이제 다른 브랜치로 이동할 수 있다.
git stash
를 여러번 한 경우 stack에 목록이 쌓이게 되며 git stash list
로 확인할 수 있다.
$ git stash list
stash@{0}: WIP on [branch이름]: [커밋 번호] [커밋 이름]
stash@{1}: WIP on [branch이름]: [커밋 번호] [커밋 이름]
stash@{2}: WIP on [branch이름]: [커밋 번호] [커밋 이름]
...
stack에 저장해둔 수정사항들을 꺼내쓸 수 있다.
git stash apply
git stash apply stash@{번호} //원하는 번호
git stash apply --index
다른 브랜치에 반영할 수 있다.
원하는 stash를 불러올 수 있다.
--index
옵션으로 staged됐는지 아닌지의 여부도 불러올 수 있다.
stack에 쌓여있는 stash 목록은 브랜치에 apply해도 지워지지 않아 명령어를 통해 제거해줘야한다.
git stash drop //가장 최근의 stash 제거
git stash drop stash@{번호} //원하는 번호
git stash pop // apply + drop을 동시에
git stash pop
으로 apply와 drop을 동시에 할 수 있다.
오오 stash 어떨때 쓰는건지 잘 몰랐는데 감자합니다..!