C.W.K.
Stream
Lesson 04 of 05 · published

stash: 임시 선반이지 창고가 아님

~18 min · stash, wip

Level 0Untracked 새싹
0 XP0/47 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

Stash 는 선반, 창고 아니야

git stash 는 uncommitted 작업을 — staged + unstaged — 'saved for later' snapshot 스택에 올리고 working tree 를 깨끗하게 비워. 사용 사례는 방해야: feature 작업 중인데 main 의 긴급 버그 hotfix 가 필요하고 commit 못 해. Stash, switch, fix, switch back, pop. 5분. 방해가 반쯤 한 작업을 오염시키지 않음.

기본 동작은 짧아. git stash push -m "WIP feature/x" 가 저장하고 working tree 정리. git stash list 가 저장된 거 표시. git stash pop 이 가장 최근 stash 복원하고 스택에서 제거. git stash apply 는 제거 없이 복원 — 같은 stash 를 여러 branch 에 적용할 때 유용. git stash drop <ref> 는 특정 stash 삭제, git stash clear 는 전부 삭제.

Daily 에 중요한 flag 둘. -u (또는 --include-untracked): Git 이 아직 추적 안 하는 새 파일 포함. 이거 없으면 untracked 파일이 working tree 에 남아 branch switch 때 놓칠 수 있어. -k (또는 --keep-index): unstaged 변경만 stash, staged 는 그대로. Staged 부분 commit 하면서 나머지 선반에 둘 때 유용.

Stash 는 선반이지 창고 아니야. Stack 은 branch 가로질러 살고 무기한 남지만 local-only 고 잊기 쉬워. 3개월 전 누구도 기억 못 하는 stash 는 죽은 짐이고, codebase 가 움직인 뒤엔 conflict 해결 어려워. 프로 습관: 짧은 방해 (시간 단위, 주 단위 아니라) 엔 stash, 며칠 뒤 돌아올 거면 WIP branch 의 commit 선호. 세션 시작 때 git stash list 가 commit 으로 바꾸거나 drop 해야 할 stash 잡아줘.

Code

방해 처리용 stash 동작·bash
# Feature 중에 긴급 버그 방해:
git stash push -m "WIP: feature/profile-page"

# Working tree 깨끗. Switch 해서 고치기:
git switch hotfix/login-bug
# ... 고치고, commit, push ...

# Feature 작업으로 복귀:
git switch feature/profile-page
git stash pop

# 선반에 뭐 있는지 list:
git stash list
# stash@{0}: On feature/profile-page: WIP: feature/profile-page
유용한 flag·bash
# Untracked 파일 포함 (아주 흔한 요청):
git stash push -u -m "WIP with new files"

# Staged 부분 유지, unstaged 만 stash:
git stash push -k -m "shelf the unstaged side"

# 제거 없이 apply (여러 branch 에 선택적으로):
git stash apply stash@{0}

# 특정 stash drop:
git stash drop stash@{2}

# 모든 stash 삭제 (위험 — 복구 불가):
git stash clear

External links

Exercise

Staged + unstaged 파일 여러 개 + untracked 하나 수정. -u + 진짜 메시지로 stash. branch switch 해서 다른 거 (commit 하나). 돌아와서 git stash list, git stash pop. Untracked 포함 다 돌아왔는지 확인. 두 번째 stash 만들어서 일부러 git stash drop. Pop 과 apply 차이 적어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.