포스트

[GitHub 100일 챌린지] Day 66 - git stash 임시 저장

[GitHub 100일 챌린지] Day 66 - git stash 임시 저장

100일 챌린지 Day 66 - 아직 커밋하기 애매한 작업을 잠시 치워두는 git stash를 배웁니다.

배울 내용

  1. git stash가 필요한 상황
  2. 임시 저장, 목록 확인, 다시 적용하는 방법
  3. 충돌 없이 안전하게 stash를 쓰는 습관

1. git stash란?

git stash는 작업 중인 변경사항을 임시로 저장하고, 작업 디렉터리를 마지막 커밋 상태로 되돌리는 명령어입니다.

예를 들어 기능을 만들던 중 급한 핫픽스 요청이 들어왔다고 해봅시다. 아직 커밋하기에는 애매하지만 브랜치를 바꿔야 합니다.

1
2
3
4
5
6
git status --short
#  M app.js
#  M style.css

git stash
# Saved working directory and index state WIP on main...

이제 작업 디렉터리가 깨끗해졌고, 다른 브랜치로 이동할 수 있습니다.


2. 기본 흐름: save → list → apply

stash를 만들 때는 메시지를 함께 남기는 습관이 좋습니다.

1
git stash push -m "login form layout work"

저장된 stash 목록은 git stash list로 확인합니다.

1
2
3
git stash list
# stash@{0}: On main: login form layout work
# stash@{1}: WIP on feature/search: add filter draft

가장 최근 stash를 다시 적용하려면 apply를 사용합니다.

1
git stash apply

적용 후 stash 목록에서 제거하고 싶다면 pop을 사용합니다.

1
git stash pop
명령어 의미
git stash push -m "메시지" 변경사항 임시 저장
git stash list stash 목록 확인
git stash apply stash 적용, 목록에는 유지
git stash pop stash 적용 후 목록에서 제거
git stash drop stash@{0} 특정 stash 삭제

3. staged 파일과 untracked 파일 처리

기본 git stash는 tracked 파일의 변경을 저장합니다. 새로 만든 untracked 파일까지 함께 저장하려면 -u를 사용합니다.

1
2
# 새 파일까지 포함해서 stash
git stash push -u -m "draft with new files"

ignored 파일까지 포함하려면 -a를 사용할 수 있지만, 보통은 조심해야 합니다.

1
2
# ignored 파일까지 포함: 매우 넓게 저장
git stash push -a -m "full workspace snapshot"

staged 상태를 유지하고 unstaged 변경만 stash하고 싶다면 --keep-index가 유용합니다.

1
2
git add safe-change.js
git stash push --keep-index -m "hide unfinished work"

이렇게 하면 이미 stage한 변경은 남겨두고, 아직 정리되지 않은 변경만 임시 저장할 수 있습니다.


4. 실전 시나리오

시나리오 1: 급한 브랜치 전환

1
2
3
4
5
6
git stash push -m "before hotfix"
git switch hotfix/login-error

# 핫픽스 작업 후 다시 원래 브랜치로
git switch feature/signup
git stash pop

시나리오 2: Pull 전에 내 작업 보호

1
2
3
git stash push -u -m "before pull"
git pull --rebase
git stash pop

원격 변경을 먼저 가져와야 할 때 현재 작업을 안전하게 치워둘 수 있습니다.

시나리오 3: stash 내용 확인

1
2
git stash show
git stash show -p stash@{0}

show -p는 stash에 들어간 실제 diff를 보여주므로, 적용하기 전에 확인할 때 좋습니다.


정리

완료 체크:

  • git stash push -m으로 메시지 있는 stash를 만들 수 있다
  • git stash applygit stash pop의 차이를 설명할 수 있다
  • untracked 파일을 포함하려면 -u가 필요하다는 것을 안다

핵심 요약:

  • git stash push -m "메시지" - 현재 변경 임시 저장
  • git stash list - stash 목록 확인
  • git stash apply - 적용만 하고 stash 보존
  • git stash pop - 적용 후 stash 제거
  • git stash push -u - 새 파일까지 포함

다음: Day 67 - Stash 고급 활용


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.