5.1 暫存手頭上的工作#
場景:寫到一半,得先切走#
你正在 feature 分支上寫一個新功能,寫到一半(程式碼還不能 commit),突然要緊急切回 main 修 bug。直接 git switch main 會失敗——因為工作區有未提交的修改。
解法:git stash#
git stash
git stash 把目前所有未提交的修改「收起來」,工作區立刻變乾淨,就可以放心切分支:
git stash # 收起來
git switch main # 去修 bug
# ...修好 bug,commit,push...
git switch feature/login # 回來
git stash pop # 把剛才收起來的修改放回來
常用指令#
git stash # 收起目前的修改
git stash list # 看看收了哪些(可能有多次)
git stash pop # 取出最近一次收的修改(取出後從 list 移除)
git stash apply # 取出但不從 list 移除(想套用到多個分支時用)
git stash drop # 丟棄最近一次收的修改
git stash list 輸出範例:
stash@{0}: WIP on feature/login: a1b2c3d 完成登入表單
stash@{1}: WIP on main: e4f5g6h 初始化
使用心法#
- stash 是「暫時收納」,不是「另一個暫存區」。收了就要記得 pop,否則容易忘掉
- 適合:臨時要切分支、臨時要 pull 但本地有修改
- 不適合:長期儲存半成品(那應該 commit 到一個 WIP 分支上)
進階:
git stash -u可以連未追蹤的新檔案一起收;git stash pop stash@{1}可以指定取出第幾個。