어떤 파일을 수정하다가 현재 파일의 수정사항은 제외하고 다른 파일을 커밋하고 싶은 경우가 있습니다. 물론 명령어를 통해 다른 파일들만 커밋할 수는 있지만 그렇게 되면 계속 커밋 메세지가 날아와서 번거롭죠. 또는 뇌빼기 코딩하다 무지성으로 git commit -am 해버리면 곤란 할 수도 있고요. 오늘은 그럴때 사용하는 명령어인 git stash
를 알아보겠습니다.
우선 실습 파일에서 s1과 s2라는 파일을 만들어줍니다. stash 명령은 tracked 파일에 한정해서 사용할 수 있기 때문에 우선 아무렇게나 적고 한 번 커밋해 주세요. 이렇게하면 stash 명령 실습 준비가 완료됩니다.
준비된 상태에서 s2혹은 s1 중 아무거나 열고 수정해주세요. 저는 s2를 수정하겠습니다. 그런다음에 git status 명령으로 확인해보면 s2.txt가 커밋될 준비가 되었다고 알려줍니다.
이제 상황이 s2를 커밋하지 말고 s1부터 커밋해야한다고 가정합니다. 이때 stash명령어를 입력합니다.
git stash
이렇게 stash
를 이용하니 modified 목록에서 s2.txt가 사라졌습니다. 이렇게 제외시킨 파일을 다시 불러올때는 stash pop
을 이용합니다.
git stash pop
stash
는 스택의 구조를 취하고 있습니다. 여러 파일을 stash할 수 있는데, 이때 스택의 구조를 취하고 있기때문에 후입선출
의 영향을 받아, 가장 나중에 stash된 파일이 pop을 할 경우 가장 먼저 stash에서 나오게 됩니다.
이러한 스택 구조를 갖는 stash의 동작을 기억하셔셔 사용할 때 주의하시면서 사용하시면 됩니다.