본문 바로가기

Git

[Git] git stash, git stash pop

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Stashing%EA%B3%BC-Cleaning

 

Git - Stashing과 Cleaning

작업하던 저장소가 완전 지저분해져서 Git에게 진짜로 강제로 정리하도록 해야 하는 경우가 생길 수 있다. 예를 들어 Git 버전관리 데이터가 포함된 디렉토리를 복사해왔거나 서브모듈 디렉토리

git-scm.com

팀 프로젝트를 진행하는데 깜빡하고 브랜치를 안만들고 develop 브랜치에서 작업을 했다... 당황해하고 있었는데 팀원이 git stash 라는 명령어를 알려주었고 해당 명령어를 통해서 문제를 쉽게 해결할 수 있었다.

 

Stash는 Modified이면서 Tracking 되는 파일들과 Staging Area 즉 git add 한 파일들을 보관해두는 장소이다. 그렇기 때문에 위와 같은 상황에서 git stash 명령어를 사용하면 현재 브랜치에서 추가한 코드들을 저장해 두었다가 브랜치를 새로 만들고 해당 브랜치로 switch 한 뒤 git stash pop 명령어를 사용해서 새로 만든 브랜치로 작업한 코드를 그대로 옮길 수 있다.

 

stash 명령어는 위와 같은 상황이나 브랜치를 잠시 변경해야 하는 상황에서 아직 완료하지 않은 일을 커밋해야 하는 컬끄러운 상황에서 유용하게 사용될 수 있다.

사용방법

 

현재 위와 같이 develop 브랜치에서 코드를 수정한 상황이다. 여기서 git stash 명령어를 사용하면 아래와 같이 Saved working derectory 라는 문장을 확인할 수 있다.

 

 

이 상태에서 다시 git status 명령어를 사용하면 현재 develop 브랜치는 수정사항이 없다고 뜬다.

 

 

이제 새로운 브랜치를 만들고 해당 브랜치로 이동한 뒤 git stash pop 명령어를 사용하면 아래와 같이 stash에서 저장한 코드를 가져와서 이동한 브랜치에 반영한다. 이 상태에서 add, commit 한 뒤 원격 브랜치로 푸쉬하면 develop 브랜치에서 수정한 내용이 feature/mychallenge-api 라는 원격 브랜치로 push 된 것을 확인할 수 있다. 마지막으로 feature/mychallenge-api 브랜치를 develop 브랜치로 merge 하면 끝!!

 

'Git' 카테고리의 다른 글

[Git] Git Advanced  (0) 2022.11.29