Git stash 기능

개발툴|2014. 7. 28. 17:05

feature 브랜치에서 작업을 진행하고 있는 중 다른 작업 요청이 와서 다른 브랜치로 checkout을 했는데 작업했던 소스가 보이는 현상이 발생했다.


내가 원했던 것은 새로운 브랜치로 변경을 하게 되면 기존 작업했던 소스 변경 및 새로 추가된 파일이 보이지 않는 것이였다. 이를 해결하기 위한 방법으로는 작업했던 소스들을 local repository에 커밋한 후 브랜치 변경을 하면 작업했던 소스들이 보이지 않게 할 수 있다. 하지만 완성되지 않은 코드를 커밋하는 것은 안 좋은 방법이기 때문에 이 방법은 그닥 추천하지 않는다.


이런 경우 Git에서는 어떠한 방법으로 가이드 하고 있는지 찾아보니 stash 라는 기능이 있다는 것을 알게 되었고, 다음과 같은 작업 절차를 이용하면 내가 원하는 상태에서 개발을 진행할 수 있다.


현재 working directory의 상태는 다음과 같다.

tw1111.txt 파일은 stage 영역에서 관리되어 있고, tw2222.txt, tw3333.txt 파일은 새로 추가된 파일이다.


1.

위와 같은 상태에서 다음의 명령어를 실행한다. ( -u 옵션은 Untracked files도 함께 stack 영역에 저장해 둔다. )

git stash -u


2.

다른 브랜치로 이동하여 작업 요청에 따른 개발을 완료한다.


3.

원래 작업을 진행했던 브랜치로 이동한다.


4.

다음의 명령어를 실행한다. stack 영역에 저장되어 있었던 작업 내용이 복원된다.

git stash apply



이와 같이 stash 기능을 이용하면 브랜치 이동 간에 commit 되지 않은 상태의 파일을 임시적인 저장 공간에 백업할 수 있다.




stash 명령어


git stash list : 백업한 리스트 노출

git stash clear : 백업 리스트 모두 지우기

git stash apply : 최근 stack 영역에 저장되어 있던 작업 내용 복원

git stash stash@{0} : stash list 명령어를 이용하여 출력된 리스트에서 선택적 복원 (빨간색 부분이 식별자)

git stash save -u "saveTest" : stack 영역에 작업 중인 소스 저장 시 이름 지정

댓글()