1 분 소요

✔ git stash를 왜 사용하는가?

특정 브랜치에서 작업을 진행하던 중, 해당 브랜치에서 작업해야 하는 내용이 다 끝나지 않았는데 다른 브랜치로 체크 아웃을 해야 하거나 commit을 해야하는 경우

git Stash란?

마무리 되지않은 작업을 잠시 스택에 저장하는 커멘드로, 완료되지 않은 일을
commit하지 않고 나중에 다시 꺼내와 마무리 할 수 있다.

  • git stash 명령어 사용 시 working directory에서 작업한 내용만 저장
  • stash란 아래에 해당하는 파일들을 보관해두는 장소
    • Modified or Tracked 상태의 파일
    • Tracked 상태인 파일을 수정한 경우
    • Staging Area에 있는 파일
    • git add 명령을 실행한 경우

git stash

git stash
git stash save

현재는 git stash 명령을 통해 변경 사항을 숨겨둔 상태.

git stash나 git stash save 명령어를 입력하면 스택에 새로운 stash가 만들어진다.
이 과정을 통해 working directory는 깨끗해진다.

git apply

git stash apply
git stash apply [stash name]

현재 브랜치 exp
커밋하도록 정하지 않은 변경 사항:
  (무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
  (use "git restore <file>..." to discard changes in working directory)
	수정함:        g1.txt

커밋할 변경 사항을 추가하지 않았습니다 ("git add" 및/또는 "git commit -a"를
사용하십시오)
  • stash를 하였던 내용을 apply 명령어를 통해 다시 가져온다.
  • stash명을 기재하지 않으면 가장 최근 stash를 가져온다.

git stash list

git stash list

stash@{0}: WIP on exp: 6afcb49 1
stash@{1}: WIP on exp: 6afcb49 1
  • stash list에 나오는 내용은 명시적인 삭제가 없으면 항상 살아있다.
  • 여러번 stash를 했다면 위의 명령어를 통해 저장된 stash 목록 확인 가능하다.

git stash drop

git stash drop

Dropped refs/stash@{0} (5cae620b1638f8d5f0bfd22cad31c0b3d4d79260)
  • 가장 최근 stash를 삭제한다.

pop

git stash pop

현재 브랜치 exp
커밋하도록 정하지 않은 변경 사항:
  (무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
  (use "git restore <file>..." to discard changes in working directory)
	수정함:        g1.txt

커밋할 변경 사항을 추가하지 않았습니다 ("git add" 및/또는 "git commit -a"를
사용하십시오)
  • pop 명령어를 사용하는경우 apply 후 drop을 해줄 수 있다.

참고 자료

댓글남기기