我們經常會遇到這樣的情況:
正在dev分支開發新功能,做到一半時有人過來反饋一個bug,讓馬上解決,但是新功能做到了一半你又不想提交,這時就可以使用
git stash
命令先把當前進度保存起來。然后切換到另一個分支去修改bug,修改完提交后,再切回dev分支,使用git stash pop
來恢復之前的進度繼續開發新功能。
1. stash當前修改
git stash
:
保存當前工作進度,會把暫存區和工作區的改動保存起來。執行完這個命令后,在運行git status
命令,就會發現當前是一個干凈的工作區,沒有任何改動。
stash
是本地的,不會上傳到服務器上;- 使用
git stash save 'message...'
可以添加一些注釋。
2. 查看現有stash
git stash list
:
顯示保存進度的列表。也就意味着,git stash
命令可以多次執行。
3. 重新應用緩存的stash
git stash pop [–index] [stash_id]
:
恢復之前緩存的工作目錄。
git stash pop
:恢復最新的進度到工作區。git
默認會把工作區和暫存區的改動都恢復到工作區,同時刪除該進度;git stash pop stash@[stash_id]
:恢復指定的進度到工作區,如:git stash pop stash@{1}
。stash_id
是通過git stash list
命令得到的;- 通過
git stash pop
命令恢復進度后,會刪除當前進度; git stash apply stash@{1}
:恢復進度后,不會刪除當前進度,默認使用最近的stash(即stash@{0}
)。
4. 移除stash
git stash drop [stash_id]
:
刪除一個存儲的進度,如:git stash drop stash@{0}
- 如果不指定
stash_id
:,則默認刪除最新的存儲進度; git stash clear
:刪除所有存儲的進度。