본문 바로가기
Tech Notes

Git Stash 안전하게 사용하는 방법: 커밋 없이 브랜치 변경 후 작업 복원하기

by miracle-tech 2026. 4. 3.
728x90
반응형

Git을 사용하다 보면 작업 중이던 변경사항을 아직 커밋하고 싶지는 않은데, 다른 브랜치로 잠깐 이동해야 하는 순간이 자주 생깁니다. 이럴 때 가장 많이 쓰는 방법이 git stash입니다. 

git stash를 사용하면 현재 수정한 파일들을 로컬에 임시 저장해두고, 워킹 트리를 깨끗한 상태로 만든 뒤 다른 브랜치로 이동할 수 있습니다. 이후 필요할 때 다시 꺼내서 이어서 작업하면 됩니다.

특히 중요한 점은 git stash가 원격 저장소에 올라가는 기능이 아니라는 점입니다.

즉, stash에 넣은 내용은 내 로컬 .git 영역에만 임시로 저장됩니다.

그래서 아직 정리되지 않은 작업을 잠깐 치워두고 싶을 때 유용합니다.

 

반대로 팀원과 공유되거나 히스토리로 남는 것은 아니므로, 장기 보관 목적이라면 stash보다 임시 브랜치에 커밋하는 방식이 더 적합합니다.

브랜치를 바꾸기 전에 가장 안전하게 stash하는 기본 흐름은 아래와 같습니다.

 

git status
git stash push -u -m "temp before branch switch"
git switch 대상브랜치
git stash apply "stash@{0}"

 

1) 먼저 git status로 현재 어떤 파일이 변경되었는지 확인합니다.

2) 그다음 git stash push -u -m "temp before branch switch"를 실행하면 현재 변경사항을 stash에 저장합니다.

여기서 -u 옵션은 untracked 파일까지 함께 저장한다는 뜻이고, -m 옵션은 stash 이름을 붙여 나중에 구분하기 쉽게 해줍니다. 이 과정을 거치면 현재 브랜치의 작업 내용은 로컬 stash에 들어가고, 워킹 트리는 비워집니다.

3) 이후 git switch 대상브랜치로 원하는 브랜치로 이동합니다.

4) 그리고 마지막으로 git stash apply "stash@{0}"를 실행하면 방금 저장한 stash를 현재 브랜치에 다시 적용할 수 있습니다. 여기서 apply를 쓰는 이유는 pop보다 안전하기 때문입니다. pop은 stash를 적용한 뒤 바로 삭제하려고 하지만, apply는 stash를 남겨둔 채 적용만 합니다. 따라서 충돌이 발생하거나 적용 결과가 마음에 들지 않아도 원본 stash가 그대로 남아 있어 다시 시도할 수 있습니다.

 

한 가지 실무 팁도 있습니다. PowerShell 환경에서는 stash@{0}를 따옴표 없이 입력하면 해석 문제가 생길 수 있습니다. 그래서 아래처럼 따옴표로 감싸서 쓰는 것이 안전합니다.

git stash apply "stash@{0}"

 

또는 가장 최근 stash 하나만 적용할 예정이라면 그냥 git stash apply만 입력해도 됩니다.

다만 stash가 여러 개 쌓여 있다면 git stash list로 목록을 먼저 확인한 뒤 정확한 항목을 지정하는 편이 좋습니다.

적용이 끝난 뒤에는 반드시 상태를 다시 확인해야 합니다.

git status
git stash list

 

정상적으로 복원되었다면 수정 파일이 다시 modified 상태로 보일 것이고, -u로 함께 저장했던 파일은 new file로 나타날 수 있습니다. 만약 현재 브랜치와 stash를 만들었던 브랜치의 코드 차이가 크다면 충돌이 발생할 수도 있습니다. 이 경우 Git이 자동으로 병합하지 못한 파일은 both modified 같은 형태로 표시됩니다. 그런 경우 충돌을 해결한 뒤 계속 작업하면 됩니다.

stash가 문제 없이 잘 적용되었고 더 이상 보관할 필요가 없다면 그때 삭제하면 됩니다.

 
git stash drop "stash@{0}"

 

정리하면, 커밋하지 않은 변경사항을 잠깐 보관한 뒤 브랜치를 바꾸고 다시 복원하려면 git stash push -u -m ... 후 git switch, 그리고 git stash apply 순서로 진행하는 것이 가장 무난합니다. 특히 git stash pop보다 git stash apply를 먼저 사용하는 습관이 더 안전합니다. 적용이 끝난 뒤 상태를 확인하고, 문제가 없을 때 stash를 직접 삭제하면 실수할 가능성을 줄일 수 있습니다.

728x90