Stashing
깃으로 작업을 하던 도중, 잠시 브랜치를 변경을 해야할 일이 있거나, 다른 관련없는 작업을 시작해야 할 때,
작업을 하는 도중이라 커밋을 남기기 찝찝하다면 stash란 기능을 사용하면 된다.
stash 명령을 사용하면 modified이면서 tracked인 상태의 파일과 staging area에 있는 파일들을 보관한다.
git stash
예제를 통해서 알아보자. git status를 이용해서 현재 상태가 다음과 같다고 하자.
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: index.html
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
#
# modified: lib/simplegit.rb
이 상태에서 git stash
명령어를 실행하면 스택에 새로운 stash가 만들어지고, 워킹 디렉토리는 깨끗해진다.
git stash의 list를 확인하려면 git stash list
명령어를 사용한다.
이제 git stash apply <stash 이름>
명령어를 사용하여 stash를 적용한다. 이름을 입력하지 않으면 가장 최근의 stash를 적용한다.
git stash apply --index
명령어를 사용하면 staged 상태까지 그대로 복원해 준다. 그럼 원래 작업하던 상태로 돌아올 수 있다.
apply 옵션은 단순히 stash를 적용하는 것 뿐, stash는 여전히 스택에 남아있다. git stash drop <stash 이름>
명령을 사용하여 해당 stash를 제거한다.
stash apply
명령을 사용하고 나서 apply 명령을 사용하지 않은 상태로 다시 되돌리고 싶을때는, git stash show -p stash@{0} | git apply -R
를 사용해 되돌린다.
– 출처
https://git-scm.com/book/ko/v1/Git-%EB%8F%84%EA%B5%AC-Stashing