[Git] Commit 하지 않고 Branch 이동하기

tori·2023년 12월 8일
post-thumbnail

토독토독 .. 열심히 작업했는데
'아맞다! 브랜치 변경을 안했네' 싶을 때가 많다😮

이럴 때 편리하게 사용할 수 있는 명령어가 바로 git stash이다

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

stash를 적용한 후에도 해당 stash가 여전히 스택에 남아있기 때문에, 다음 명령어를 통해 제거할 수 있다.

pop 명령어 같은 경우에는 applydrop을 동시에 실행하는 역할을 한다.

# 가장 최근의 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

0개의 댓글