[GitHub 100일 챌린지] Day 66 - git stash 임시 저장
[GitHub 100일 챌린지] Day 66 - git stash 임시 저장
100일 챌린지 Day 66 - 아직 커밋하기 애매한 작업을 잠시 치워두는
git stash를 배웁니다.
배울 내용
git stash가 필요한 상황- 임시 저장, 목록 확인, 다시 적용하는 방법
- 충돌 없이 안전하게 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 apply와git 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 라이센스를 따릅니다.
