
前言:當工作遇上突發狀況
在軟體開發的過程中,我們最常遇到的情境就是:你正在開發新功能,程式碼寫到一半,還不完整、跑不起來。這時同事突然喊說:「線上版本有緊急 Bug,快切換到主分支修復!」
你不想 commit,因為那是破碎的內容;你也不想放棄改動。這時候,你需要的不是「存檔」,而是 Git Stash。什麼是 Git Stash?
簡單來說,git stash 就像是一個**「臨時置物櫃」或「暫存口袋」**。
它能幫你把當前工作目錄下所有「還沒準備好要提交」的改動暫時藏起來,讓你的工作區立刻恢復到乾淨的狀態,好讓你放心地切換到別的分支去處理緊急Bug。
核心操作指令速查
1. 把東西收進置物櫃 (Push)
這是最基本的動作,把手邊改動暫存起來。
- 指令:
git stash
進階撇步:
git stash save "正在開發 feature-A 的 UI 部分"加上說明文字,能讓你之後要拿出來時更快找到正確的那一份。
2. 查看置物櫃清單 (List)
如果你 stash 了不只一次,可以用這個指令查看所有暫存:
- 指令:
git stash list它會以類似stash@{0},stash@{1}這種堆疊(Stack)方式排列,越晚存進去的會在越上面。
3. 把東西拿出來還原 (Pop / Apply)
處理完緊急事務後,回到原本的分支,你有兩種方式把改動拿出來:
- Pop(還原並刪除): 東西拿出來後,置物櫃裡的紀錄會自動刪除。
- git stash pop
- Apply(還原但保留): 東西拿出來了,但置物櫃裡還留著一份副本。
- git stash apply
4. 清理置物櫃 (Drop / Clear)
- 刪除特定紀錄:
git stash drop stash@{0} - 一鍵清空所有暫存:
git stash clear
進階技巧 & 避坑指南
1. 新檔案存不進去?
預設情況下,git stash 不會收納「新建立但還沒 add」的檔案(Untracked 檔案)。如果你剛建立了一個新檔案但沒 add,它是存不進去的。
- 解法: 使用
git stash -u(include-untracked),就能連同新檔案一起暫存。
2. 置物櫃的「盲盒感」
如果你 stash 了太多次卻沒寫說明,最後你會有 stash@{0} 到 stash@{10},完全不知道裡面是什麼。建議養成寫 save "說明" 的習慣!
該用 Stash 還是 Worktree?
這兩者都是為了解決「多工切換」的問題,但情境略有不同:
- 使用 Git Stash 的時機: 只是臨時走開 5 分鐘處理一個小問題,處理完馬上就會回來,且不需要同時開著兩邊的程式碼。
- 使用 Git Worktree 的時機: 需要處理的問題比較複雜、需要參考原本開發分支的邏輯,或者你正在跑一個很長的測試,不想打斷它。
簡單來說,Stash 是**「暫停工作」,而 Worktree 是「多開視窗」**!

















