Git stash 사용법: 작업 중인 코드 잠시 저장하고 다시 꺼내기

코드를 수정하다가 다른 브랜치를 확인해야 하는데, 아직 커밋할 단계는 아닐 때가 있다. 이럴 때는 git stash로 변경 사항을 잠시 보관할 수 있다. 이번에는 새 파일까지 저장하고, 내용을 확인한 뒤 복원하는 흐름을 연습해 보자.

1. 무엇을 저장할지 확인하기

저장소 안에서 먼저 상태를 확인한다.

git status --short
git diff
git diff --cached

git diff는 아직 스테이징하지 않은 변경을, git diff --cached는 스테이징한 변경을 보여준다. 새로 만든 미추적 파일의 내용은 이 두 diff에 나오지 않으므로 별도로 확인하자.

2. 새 파일까지 함께 보관하기

git stash push -u -m "로그인 화면 작업 중"
git status --short

-m 뒤에는 나중에 알아볼 수 있는 메모를 쓴다. -u를 붙이면 아직 Git이 추적하지 않는 새 파일도 함께 저장한다. 기본 git stash push만으로는 미추적 파일이 포함되지 않는다.

다만 .gitignore로 무시되는 파일은 -u로도 저장되지 않는다. 예를 들어 무시된 .env가 있다면 그대로 남는다. 명령을 실행한 뒤에는 출력과 상태를 확인하고 다음 작업으로 넘어가자.

3. 목록과 내용을 보고 복원하기

git stash list
git stash show -p -u 'stash@{0}'

stash@{0}은 가장 최근에 저장한 항목이다. 중괄호가 들어가는 이름은 위처럼 따옴표로 감싸 쓰면 편하다. 저장하거나 삭제하면 번호가 바뀔 수 있으니, 실행 직전에 메모와 내용을 확인하자.

다른 브랜치에서 일을 마쳤다면 원래 작업하던 브랜치로 돌아온 뒤 복원한다. 아래의 feature/login은 예시이므로 실제 브랜치 이름으로 바꿔야 한다. 복원 전에 현재 폴더에 별도의 미완료 변경이 남아 있는지도 확인하자.

git switch feature/login
git status
git stash apply 'stash@{0}'
git status

apply는 변경을 복원하고 stash 항목을 남겨둔다. 파일을 열고 테스트해서 제대로 돌아왔는지 확인한 뒤, 더 이상 필요 없는 항목을 지운다.

git stash list
git stash drop 'stash@{0}'

이 삭제 명령은 복원 후 새 stash를 추가하지 않아, 확인한 항목이 여전히 0번일 때의 예시다.

apply와 pop은 어떻게 다를까?

git stash pop은 적용에 성공하면 해당 stash 항목까지 삭제한다. 복원과 확인을 나눠 진행하고 싶다면 위 예시처럼 apply 후 drop을 쓰면 된다.

원래 스테이징했던 상태까지 복원하려면 git stash apply --index 'stash@{0}'을 사용할 수 있다. 충돌 등으로 실패할 수 있으므로 실행 후 상태 확인은 필요하다.

충돌이 나면 다시 pop하지 않기

저장한 뒤 대상 코드가 달라지면 복원 과정에서 충돌이 생길 수 있다. pop이 충돌로 실패한 경우 stash 항목은 자동 삭제되지 않는다.

먼저 git status로 충돌 파일을 확인하고 내용을 수정한다. 해결한 파일은 git add 파일명으로 표시한 뒤 테스트하고, 준비되면 커밋하자. stash 적용 충돌에는 git stash --continue라는 후속 명령이 없다. 일부 변경이 이미 적용됐을 수 있으므로 같은 pop을 반복하기보다 현재 파일 상태부터 확인하는 편이 좋다.

직접 연습해 보기

실제 프로젝트가 아닌 새 빈 폴더에서 아래 순서로 실행해 보자. Git의 커밋 작성자 설정이 되어 있다는 전제다.

mkdir stash-practice
cd stash-practice
git init
printf 'first\n' > memo.txt
git add memo.txt
git commit -m "Add memo"

printf 'second\n' >> memo.txt
printf 'idea\n' > idea.txt
git stash push -u -m "메모 수정과 아이디어"
git status --short

git stash show -p -u 'stash@{0}'
git stash apply 'stash@{0}'
git status --short

저장 직후에는 상태 출력이 비어 있고, 복원 후에는 memo.txt의 수정과 idea.txt의 추가가 다시 나타나면 된다. 두 파일을 열어 내용을 확인한 다음 연습용 stash를 정리하자.

git stash drop 'stash@{0}'

짧게 작업을 비워야 할 때는 stash가 편하다. 서로 다른 브랜치를 계속 나란히 열어두고 싶다면 작업 폴더를 추가하는 git worktree도 함께 알아두자.

함께 읽기 및 참고 자료

공식 문서 확인: 2026년 10월 4일.

 

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top