[git] git stash 사용
2024. 7. 18.

프로젝트를 하던 중에 pull을 받다가 이런 에러 메시지가 나왔다.

The following untracked working tree files would be overwritten by merge

 

어떤 브랜치에서 파일을 수정하거나 추가한 뒤에 커밋을 하지 않은 상태에서 다른 브랜치로 체크아웃을 하려고 할 때 나오는 오류라고 한다.

작성하던 부분이 아직 완전히 커밋할 정도의 상태가 아니라서 커밋을 할 수도 없고 어쩌나 하다가

해결법 냅다 구글링해보니 git stash를 사용하라고 해서 정리해보는 git stash에 관한 글

git stash -> git pull ... -> git stash pop 으로 해결했다.

 

stash란?

현재 진행 중이던 내용들을 stash에 안전하게 저장해두고 다른 브랜치로 이동하여 작업한 뒤에 다시 돌아와서 복구하여 작업을 계속 할 수 있게 해주는 것이다.

저장한 내용을 다른 브랜치로 옮기는 것도 가능하다.

 

명령어

$ git stash
$ git stash -m "message"

현재 적용된 커밋 이후 변경된 작업 디렉토리와 인덱스 상태가 저장된다.

이 상태에서 git status를 확인해보면 커밋하지 않은 변경사항이 안 보이는걸 확인할 수 있다.

 

m옵션을 사용해서 어떤 이유로 stash했는지 메시지를 남길 수 있다.

$ git stash list

stash에 저장된 사항들을 볼 수 있다.

$ git stash drop

stash pop에서 적용과정이 없는것과 같은 효과이다.

$ git stash pop

저장 내용을 복구한다. stash에 저장된 내용을 현재 브랜치에 적용할 수 있고 pop과 동시에 stash에서 해당 내용은 사라진다.

$ git stash apply

git stash pop과 비슷한데 저장된 내용을 브랜치에 적용하지만 stash에서 삭제되지 않는다.

$ git stash branch {branch-name}

새 브랜치를 만들어서 해당 브랜치로 pop한다.

 

앞으로 같은 오류가 발생하면 이걸로 해결하거나 다른 상황에서 응용해볼 수 있을 거 같다.

 

myoskin