본문 바로가기
Tools2026년 7월 12일3분 읽기

Git stash — 작업을 잠시 치워두고 브랜치 옮기기

YS
김영삼
조회 66
Git stash — 작업을 잠시 치워두고 브랜치 옮기기

핵심 요약

작업 중인데 커밋하기는 애매하고, 급하게 다른 브랜치로 가야 할 때 쓰는 게 git stash다. 변경사항을 임시 저장소(서랍)에 치워두고 워킹 디렉터리를 깨끗하게 만든 뒤, 볼일 보고 나서 다시 꺼낸다. "커밋하기엔 이르지만 잃고 싶진 않은" 변경을 다루는 도구다.

1. 기본 사용

git stash            # 현재 변경을 치워두고 깨끗하게
git stash list       # 쌓인 stash 목록
git stash pop        # 가장 최근 걸 꺼내고 목록에서 제거
git stash apply      # 꺼내되 목록엔 남겨둠(재사용)
git stash drop       # 특정 stash 삭제

2. pop vs apply

명령동작
pop적용 + 목록에서 제거 (한 번 쓰고 버릴 때)
apply적용하되 목록에 유지 (여러 브랜치에 적용할 때)

3. 실전 팁

  • 이름 붙이기git stash push -m "로그인 폼 작업중". 나중에 list에서 알아보기 쉽다.
  • 추적 안 되는 파일도 — 기본 stash는 새 파일(untracked)을 안 넣는다. git stash -u로 포함.
  • 특정 stash 꺼내기git stash apply stash@{2}
  • 충돌 주의 — pop 도중 충돌이 나면 stash가 목록에 남는다. 해결 후 수동으로 drop.

4. 흔한 함정

  • stash는 브랜치에 묶이지 않는다 — A 브랜치에서 넣고 B에서 꺼낼 수 있다(의도적 이동엔 유용, 실수하면 혼란).
  • stash를 쌓아두고 잊기 쉽다. list로 주기적으로 확인하고 정리하자.
  • 여러 개 쌓이면 어느 게 뭔지 헷갈린다 — 반드시 메시지를 붙여라.

자주 묻는 질문

stash와 커밋은 뭐가 다른가요?

커밋은 히스토리에 영구히 남는 기록이고, stash는 히스토리 밖의 임시 보관입니다. "아직 커밋할 만큼 정리되지 않았지만 잠깐 치워둬야 할" 변경에 stash를 쓰고, 의미 있는 단위가 되면 커밋합니다.

stash한 걸 실수로 drop하면 복구되나요?

어렵지만 가능할 수 있습니다. stash도 내부적으로 커밋 객체라, git fsck --unreachable로 잃어버린 객체를 찾아 복원을 시도할 수 있습니다. 다만 확실치 않으니 중요한 변경은 stash보다 임시 커밋(브랜치)이 안전합니다.

새로 만든 파일이 stash에 안 들어가요.

기본 git stash는 추적 중인(tracked) 파일만 넣습니다. 새로 생성한 파일까지 포함하려면 git stash -u(untracked 포함), 무시된 파일까지면 -a를 씁니다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록