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 잡아줘.