- 공유 링크 만들기
- X
- 이메일
- 기타 앱
브랜치를 이동해야 하는데 현재 작업 중인 코드가 커밋하기엔 애매한 상태라면, 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 실무 사용법 : 바로보기
댓글
댓글 쓰기