git stash
git stash는 워킹 디렉토리에 unstaged 파일들을 백업하고 워킹디렉토리를 깨끗한 상태 즉 HEAD의 상태로 만드는 것입니다.
unstaged 상태인 변경사항을 일시적으로 백업하고 워킹디렉토리를 깨끗한 상태로 유지합니다.
unstaged 변경사항이 있는 경우 git stash 명령어를 실행하면 현재의 변경사항이 저장되고 워킹디렉토리는 HEAD 상태로 돌아가게 됩니다.(여기서 untracked 내역들은 stash로 백업되지 않습니다.) git stash는 사실 git stash save와 같은 명령어입니다. 이제 워킹디렉토리가 깨끗해졌으므로 원래 하려던 rebase나 pull같은 작업을 정상적으로 할 수 있습니다.
git stash로 저장한 내역은 git stash list로 조회해 볼 수 있고 git stash show stash이름을 사용하면 특정 stash의 자세한 내용을 볼 수 있습니다. 워킹 디렉토리에 stash를 다시 적용하려면 git stash pop을 사용합니다. 이 명령어는 stash에 저장한 내용을 워킹디렉토리에 적용하고 stash 내역에서 이를 제거합니다. 제거하지 않고 적용만 하려면 git stash apply를 사용합니다. git stash에 대한 더 자세한 사용법과 옵션은 레퍼런스 문서 를 참고하면 됩니다.
[시나리오]
branch에서 새로운 기능을 개발 중인데 긴급한 수정사항이 생겼을
경우.
방법 1. 현재까지 작업한 파일들을 어딘가에 백업해두고 branch를 롤백한다. 그리고 긴급한 수정 사항을 처리한 후
백업해둔 파일들을 다시 가져와서 개발을 진행.
방법 2. 다른 디렉토리에서 현재 배포 버전을 받은 뒤 수정 사항을 처리하고
배포.
이 외에도 몇몇 꼼수가 있겠지만 git stash를 사용하면 간단히 해결할 수 있다.
#현재 작업을 저장해두고 branch를 head로 돌린다.(git reset --hard)
git stash save
#저장되어 있는 stash들 보기
git stash list
#stash를 꺼내와서 적용
#stash들은 stack에 저장된다. 따라서 가장 최근에 save한 stash가 현재 branch에 적용된다.
git stash pop
#git stash pop 과 비슷한 명령어지만 stash list에서 삭제하지 않는다는 점이 다르다.
git stash apply
#필요 없는 stash를 삭제
git stash drop
#전체 stash list를 삭제
git stash clear
stash list 에서는 그대로 남아 있으므로 수동으로 drop 을 해줘야 한다. 왜 list 에서 삭제하지 않고 남겨두는걸까 생각해보면 남겨두는게 맞다. 문제가 생겼을 때 문제를 처리하고 다시 git stash pop을 할 수 있다.
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5