작업 내역이 있는 상태에서 다른 브랜치로 체크아웃해야하는 경우, 현재 작업 내역을 임시저장하기 위해
git stash
명령어를 사용합니다.
$ git stash
명령어를 사용하면 작업 트리의 Modified, Staged 상태인 파일의 내용을 모두 stash에 저장하게 됩니다.(Untracked 상태의 파일 제외)
Untracked 상태의 파일도 함께 임시저장하려면, --include-untracked
옵션을 추가해야 합니다.
$ git stash
$ git stash —-include-untracked
$ git stash list
각 stash 내역이 stash@{숫자}
형식으로 보여지게 되는데, 이는 stack 구조로 가장 최근에 stash된 내역이 0번이고, 내역이 추가될수록 기존 stash된 내역이 1, 2 .. 순서로 밀려서 저장됩니다.
$ git stash pop
$ git stash pop stash@{숫자}
stash@{숫자}를 지정하지 않으면 가장 최근에 stash된 내역(stash@{0}
)을 불러오고 해당 stash 내역이 삭제됩니다.
$ git stash apply
의 경우, $ git stash pop
과 다르게 stash 내역을 삭제하지 않고 불러오기만 합니다.
$ git stash apply
$ git stash apply stash@{숫자}
stash 내역을 별도로 삭제해야하는 경우, $ git stash drop
명령어를 사용합니다.
$ git stash pop
= $ git stash apply
+ $ git stash drop
이라고 볼 수 있을 거 같습니다.
$ git stash drop
$ git stash drop stash@{숫자}
$ git stash clear
stash 내역을 확인할 때 $ git stash show
명령어를 사용합니다.
$ git stash show
$ git stash show stash@{숫자}
stash된 내역으로 새로운 브랜치를 생성합니다.
이때, $ git stash pop
과 마찬가지로 stash된 내역은 삭제됩니다.
$ git stash branch <브랜치명>
$ git stash branch <브랜치명> stash@{숫자}