토독토독 .. 열심히 작업했는데
'아맞다! 브랜치 변경을 안했네' 싶을 때가 많다😮
이럴 때 편리하게 사용할 수 있는 명령어가 바로 git stash이다
Stash는 Modified이면서 Tracked 상태인 파일과 Staging Area에 있는 파일들을 보관해두는 장소이다. 아직 끝내지 않은 수정사항을 스택에 잠시 저장했다가 나중에 다시 적용할 수 있다.
"파일 수정 중에 다른 브랜치로 이동해야하는 경우"에나,
or
나와 같이 "다른 브랜치에서 작업해야하는데, 실수로 기존 브랜치에서 작업한 경우"에 stash로 저장해두고, 브랜치 이동 후에 해당 내용을 적용하면 편리하게 작업을 이어갈 수 있다 !
파일 내용을 수정한 상태에서 branch를 변경하려고 하면, 다음과 같은 에러 메세지를 마주하게 된다😶
error: Your local changes to the following files would be overwritten by checkout:
Please commit your changes or stash them before you switch branches.
Aborting
먼저, stash를 통해 변경사항을 저장한다.
다음과 같이 save 명령어를 사용하면 description을 포함하여 저장할 수도 있다.
$ git stash
$ git stash save "description"
나의 경우에는 gitlab에서 이슈를 생성한 이후에 브랜치를 만든 상황이었기 때문에, 브랜치를 업데이트하고 변경한 후 apply로 적용하였다!
# 원격 브랜치 업데이트
$ git remote update
# 브랜치 이동
$ git checkout [해당 브랜치]
# 가장 최근의 stash 적용
$ git stash apply
pop 명령어 같은 경우에는 apply와 drop을 동시에 실행하는 역할을 한다.
# 가장 최근의 stash 제거
$ git stash drop
# stash 전체 삭제
$ git stash clear
# stash를 적용한 이후에 바로 삭제하기
$ git stash pop
이렇게 하면 작업내용을 커밋하지 않고 브랜치 이동하기 완료~
처음에는 브랜치를 변경하지 않은걸 알면 당황스러웠는데, 이제는 초간단 해결 방법을 알기 때문에 당황하지 않는다~ 😎
https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Stashing%EA%B3%BC-Cleaning
https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-%EC%BB%A4%EB%B0%8B%ED%95%98%EC%A7%80%EC%95%8A%EA%B3%A0-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EA%B0%84-%EC%9D%B4%EB%8F%99-git-stash