git stash는 임시 저장소에 현재까지의 작업 변경 내역을 저장하는 기능이다.
staged상태인 내용과 tracked상태인(staged되지않은) 내용들을 모두 저장한다.
체크아웃된 브랜치와 상관없이 사용 가능하다.
때문에 잘못된 브랜치에서 작업하고 있었을때 사용하기 좋다.
(ex. 임시저장 -> 제대로 된 브랜치로 체크아웃 -> 꺼내오기)
untracked상태인 내용들은 -u 옵션을 적용해주지 않으면 추가로 저장하지 않는다.
(ex. 새로 추가된 파일)
필자가 자주 쓰는 stash command
git stash
git stash pop
git stash list
git stash apply
stash 하게 되면 항상 0번째에 stash stack이 쌓이고, 이전 stack들의 index는 1씩 증가한다.
- git stash push -m "메세지"
- git stash push (메세지를 입력하지 않으면 메세지 자동 생성)
- git stash -m "메세지"(push 생략가능)
- git stash (push 생략가능, 메세지 자동 생성)
- git stash --include-untracked
- git stash --all
- git stash -u (5, 6, 7은 새로 생성되어 untracked 상태인 이력들까지 stash)
- git stash save -m "메세지"
- git stash save "메세지" (-m 생략가능)
- git stash save (메세지를 입력하지 않으면 메세지 자동 생성)
apply: stack에 변화가 없다.
pop: 스택에서 해당 stash를 꺼내옴과 동시에 삭제한다.
- git stash apply stash@{N}
- git stash apply N (stash@{} 생략 가능)
- git stash apply (N번째 스택 지정하지 않으면 0번째 스택(최신스택)을 가져온다)
- git stash pop stash@{N}
- git stash pop N (stash@{} 생략 가능)
- git stash pop (N번째 스택 지정하지 않으면 0번째 스택(최신스택)을 가져온다)
현재 stash된 stack들에 대한 정보를 보는 command
git stash list
는 모든 stash stack list를 index, message와 함께 보여준다.
git stash show
는 해당 stack에 저장된 변경 내역들을 보여준다.
ex) git stash show 1 (1번째 stack의 변경사항을 보여준다)
- git stash drop stash@{N}
- git stash drop N (stash@{} 생략 가능)
- git stash drop (N번째 스택 지정하지 않으면 0번째 스택을 버린다.)
git stash clear
는 모든 stack들을 삭제한다.