Git 작업 중 브랜치 이동해야 할 때 git stash 임시 저장 활용법

브랜치를 이동해야 하는데 현재 작업 중인 코드가 커밋하기엔 애매한 상태라면, git stash가 정답입니다. 변경사항을 임시 저장소에 보관하고 working directory를 깨끗하게 만들어 다른 작업을 처리한 뒤, 언제든 원래 작업으로 돌아올 수 있습니다. 이 글에서는 실무에서 자주 쓰이는 stash 명령어와 충돌 방지 전략을 다룹니다.


Git 작업 중 브랜치 이동해야 할 때 git stash 임시 저장 활용법




git stash 기본 사용법

작업 중인 변경사항을 임시로 저장하려면 다음 명령어를 사용합니다.

  • git stash 또는 git stash push -m "메시지": 현재 변경사항을 스택에 저장하고 working directory를 HEAD 상태로 되돌립니다.
  • git stash list: 저장된 stash 목록을 확인합니다. (예: stash@{0}, stash@{1})
  • git stash show [stash@{n}]: 특정 stash의 변경 내용을 요약해서 봅니다. -p 옵션을 추가하면 diff 형태로 상세 확인이 가능합니다.

메시지를 남기면 나중에 어떤 작업을 저장했는지 구분하기 쉽습니다. 여러 개의 stash가 쌓이면 list로 확인한 뒤 특정 항목을 골라 적용할 수 있습니다.

stash 적용과 삭제 전략

저장한 변경사항을 다시 불러오는 방법은 크게 두 가지입니다.

  • git stash apply [stash@{n}]: stash를 적용하되 목록에는 그대로 유지합니다. 안전하게 확인하고 싶을 때 권장합니다.
  • git stash pop [stash@{n}]: stash를 적용하면서 동시에 목록에서 제거합니다. 적용 후 문제가 없다고 확신할 때 사용합니다.

apply를 사용하면 적용 후에도 stash가 남아있어 문제가 생겼을 때 다시 시도할 수 있습니다. 확인이 끝나면 git stash drop [stash@{n}]으로 수동 삭제하거나, 모든 stash를 지우려면 git stash clear를 실행하십시오.

staged 상태 복원과 부분 저장

기본적으로 stash는 변경사항을 unstaged 상태로 복원합니다. staged 상태까지 그대로 복원하려면 다음 옵션을 사용하십시오.

  • git stash apply --index 또는 git stash pop --index: staged 상태를 유지한 채로 변경사항을 적용합니다.
  • git stash -p: 인터랙티브 모드로 hunk 단위로 선택하여 저장합니다. 일부 변경사항만 stash하고 나머지는 working directory에 남길 때 유용합니다.

--index 옵션은 코드 리뷰 전에 staged 상태를 정확히 재현해야 할 때 필수입니다. 특히 새로 추가된 파일(untracked file)은 기본적으로 stash에 포함되지 않으므로 git stash -u 옵션을 함께 사용하십시오.

충돌 방지를 위한 브랜치 전략

stash를 적용할 때 현재 브랜치와 코드 베이스가 달라지면 충돌(conflict)이 발생할 수 있습니다. 안전하게 테스트하려면 다음 방법을 권장합니다.

  • git stash branch <브랜치명>: 새 브랜치를 생성하고 stash를 자동으로 pop합니다. stash를 만든 시점의 커밋에서 브랜치가 생성되므로 충돌 위험이 최소화됩니다.
  • 다른 브랜치에서 stash를 적용할 수도 있지만, 코드 베이스가 크게 달라진 경우 충돌 가능성이 높으므로 apply로 먼저 테스트한 뒤 문제가 없으면 drop하는 방식을 추천합니다.

실무에서는 hotfix 작업 중 긴급 배포가 들어와 브랜치를 바꿔야 할 때 stash branch로 작업 내용을 격리하고, 배포 후 다시 돌아와 병합하는 패턴을 자주 사용합니다.

요약 및 실행 가이드

git stash는 커밋하지 않은 변경사항을 임시 보관하여 브랜치 이동과 긴급 작업을 유연하게 처리할 수 있게 합니다. apply는 stash를 보존하고 pop은 적용 후 제거하므로, 안전하게 확인하려면 apply 후 drop을 권장합니다. 충돌 위험이 있다면 git stash branch로 새 브랜치에서 테스트하십시오.

Action Item: 지금 진행 중인 작업이 있다면 git stash push -m "작업 설명"으로 저장하고, 다른 브랜치로 이동해 긴급 작업을 처리한 뒤 git stash pop으로 복원해보십시오. 이 과정을 한 번 경험하면 stash의 효용을 체감할 수 있습니다.


#함께 읽으면 좋은 글

Git 커밋 되돌리기 완벽 가이드: reset vs revert 실무 사용법 : 바로보기

댓글