當我們在開發項目的時候,突然來一個變更需要修改,我們除了將當前項目提交(commit)后切換(checkout) 到其他分支外,我們還可以先將當前的修改暫存(stash)起來,然后再切換(checkout)到其他分支,而不需要提交(commit),這樣就可以減少一個 commit (雖然可以使用 git commit --amend 來修改最后一次提交 )。
暫存修改有兩種情況:
1、文件已經被 git 跟蹤,只是修改了代碼(而不是新條件文件),我們可以使用 git stash 或 git stash save "注釋" 來暫存修改。
2、如果有新添加的文件,那么就需要添加 -a 參數(如,git stash -a 或 git stash save -a "注釋"),或先 git add . 然后再使用 git stash 或 git stash save "注釋" 來暫存修改。
當完成了變更,在開啟項目,開啟項目某一個暫存可以使用 git stash apply stash@{id} ,stash@{id}里面的id默認從0開始,最近的暫存為0。如果開啟最近的一個暫存,則可以使用 git stash pop 或 git stash apply stash@{0} 來開啟。
就視覺效果來說,git stash pop 和 git stash apply stash@{0} 效果是一樣的,但是,在某些方面這兩個命令還是有所區別的,git stash pop 開啟某個修改暫存后,會在 stash list 里面將最近一次的修改暫存記錄刪除掉,而 git stash apply stash@{0} 則不會。
查看有多少個修改暫存,可以使用 git stash list 來查看 stash 列表。
我們也可刪除修改暫存,刪除某一個修改暫存,git stash drop stash@{id},如果需要清空所有的修改暫存,可以使用 git stash clear 命令。