본문 바로가기
Git

[Git] git stash로 Working Directory 정리하기 (6)

by 아마도개발자 2023. 11. 30.

 

개발을 하다보면 내가 A브랜치에서 작업을 하던 중에 어떤 요청으로 인해 B브랜치로 잠시 변경을 해야 할 일이 생길 때가 있다. 이 때 곧바로 git checkout B브랜치로 이동을 하려고 하면 에러와 함께 브랜치가 옮겨지지 않게 된다. 그 이유는 Working Directory에 아직 커밋되지 않은 파일들이 남아 있기 때문이다.

이때, 커밋을 해준 뒤에 다시 checkout을 하면 정상적으로 브랜치를 옮길 수 있지만 개발이 완료되지 않은 상태에서 단순히 브랜치를 옮기고자 커밋을 하는 것은 바람직하지 않다. 이런 경우에 사용하는 것이 바로 git stash이다.

 

git stash를 간단하게 정의하면 stash라는 하나의 stack저장소를 만들어 아직 커밋되지 않은 자료들을 stash에 담아주는 것이다. 브랜치를 옮기기 전에 stash에 내 변경사항들을 잘 담아 놓으면 브랜치를 다시 옮겼다가 돌아왔을 때 stash에 있는 변경사항을 다시 꺼내어 사용할 수 있게 된다. 바로 실습으로 넘어가보자.

 

 

위의 그래프를 보면 현재 브랜치는 master이고 ex4.md 파일에 수정사항이 있는 것을 알 수 있다. 그런데 갑자기 new브랜치로 옮겨가서 작업을 해야하는 상황이 발생한다면, git stash 명령어를 사용하여 현재 내가 수정한 작업물을 안전하게 보관할 수 있다.

 

 

 

git stash 결과를 보면 이렇게 ex4.md의 수정사항이 stash로 안전하게 이동한 것을 알 수 있다. 이 상태에서 다른 브랜치로 옮겨가 작업을 한 뒤 다시 돌아왔을 때, stash에 보관해뒀던 수정사항을 빼내기만 하면 되는 것이다. 

$git stash list

$git stash pop

 

git stash list 명령어는 현재 stash에 보관되어 있는 리스트를 볼 때 사용하고, stash pop명령은 보관함에 있는 수정사항들을 빼낼 때 사용한다.

 

 

이렇게 정상적으로 파일이 복구되었고, 그래프도 깔끔하게 정리된 것을 볼 수 있다. 

 

여러 브랜치에서 작업을 할 경우에 stash는 요긴하게 사용될 것이다. stash는 다른 명령어들 보다는 직관적이이 않게 보일 수도 있기 때문에 여러번 실습을 해보는 것이 매우 중요하다.