Git Stash로 작업 중인 변경 사항 임시 보관 및 복원하기

작업 도중 다른 작업을 해야 할 때: git stash 활용법

Git으로 개발하다 보면 완성되지 않은 코드를 그대로 두고 급하게 다른 브랜치로 전환하거나 최신 변경 사항을 풀(pull)해야 하는 상황이 발생할 수 있습니다. 이때 무리하게 커밋하지 않고도 현재 수정 내용을 일시적으로 보관할 수 있는 기능이 바로 git stash입니다.

git stash: 현재 변경 사항 저장하기

git stash

이 명령어는 현재 작업 디렉터리와 스테이징 영역(stage)의 모든 변경 사항을 숨겨진 저장소에 보관하고, 작업 트리를 마지막 커밋 상태로 되돌립니다. 결과적으로 깨끗한 워킹 디렉터리 상태가 되므로 브랜치 전환이나 병합 같은 작업을 안전하게 수행할 수 있습니다.

  • 기본적으로 추적 중인(tracked) 파일의 수정사항만 저장됩니다.
  • 새로 생성된 파일(추적되지 않은 파일)도 함께 저장하려면 다음 옵션을 사용합니다:
git stash -u

-u 또는 --include-untracked 옵션은 아직 Git이 추적하지 않는 새 파일까지 포함하여 저장합니다. 로컬에서만 사용하는 설정 파일이나 임시 리소스 등을 함께 보관할 때 유용합니다.

저장된 목록 확인하기

여러 차례 stash를 수행했다면, 저장된 항목들이 스택 형태로 쌓이게 됩니다. 전체 목록을 확인하려면:

git stash list

출력 예시:

stash@{0}: WIP on main: 38abcdef Update README
stash@{1}: WIP on feature/auth: 12fedc5 Fix login bug

가장 최근 저장은 항상 stash@{0}으로 표시됩니다.

저장된 변경 사항 다시 적용하기

다른 작업을 마친 후 원래 작업을 이어가려면 저장된 내용을 복구해야 합니다. 가장 일반적인 방법은:

git stash pop

이 명령은 스택 맨 위(stash@{0})의 변경 사항을 현재 브랜치에 적용하고, 해당 stash 항목을 스택에서 제거합니다. 만약 충돌이 발생하면 수동으로 해결해야 하며, 성공적으로 적용된 후에는 자동으로 삭제됩니다.

반면, stash를 유지한 채로 내용만 적용하고 싶다면 다음과 같이 합니다:

git stash apply

이 경우 스택에서 제거되지 않으므로 나중에 다시 시도하거나 여러 번 적용할 수 있습니다. 특정 버전을 적용하려면:

git stash apply stash@{1}

특정 stash 삭제하기

더 이상 필요 없는 stash 항목은 수동으로 제거할 수 있습니다:

git stash drop stash@{1}

또는 전체 스택을 초기화하려면:

git stash clear

메시지와 함께 저장 (선택 사항)

기억을 돕기 위해 설명 메시지를 추가할 수 있습니다:

git stash push -m "로그인 오류 수정 중"

push는 기본 stash와 동일하지만, -m 옵션을 통해 커스텀 메시지를 붙일 수 있어 관리가 더 수월합니다.

요약

  • git stash: 수정 사항을 임시 저장하고 깨끗한 상태로 되돌림
  • git stash -u: 추적되지 않은 파일도 함께 저장
  • git stash pop: 최신 stash 적용 후 제거
  • git stash apply: stash 적용은 하지만 남김
  • git stash list: 저장된 목록 확인
  • git stash clear: 모든 stash 삭제

이 기능은 불완전한 상태의 코드를 커밋하지 않고도 작업 흐름을 자연스럽게 유지할 수 있게 해주어, 협업 환경이나 복잡한 브랜치 전환 상황에서 매우 유용합니다.

태그: Git Stash Version Control command line Development Workflow

6월 30일 02:41에 게시됨