當你在dev分支開發(fā)新功能,做到一半的時候有人來找你改bug馬上解決并上線懂酱,但是你新開發(fā)的任務又不想提交誊抛,這個時候你就可以使用git stash把當前開發(fā)進度保存起來,然后切換到另一個分支去修改bug拗窃,修改完提交后蔓榄,再切到dev分支去開發(fā)默刚,使用git stash pop來恢復之前的進度繼續(xù)開發(fā)新功能,下面來看下操作命令行
命令行:
1.git stash save "xxx"
保存當前的進度荤西,會把暫存區(qū)和工作區(qū)的改動保存起來。執(zhí)行完這個命令之后執(zhí)行git status,就會發(fā)現(xiàn)當前是一個干凈的工作區(qū)勉躺,沒有任何改動觅丰。我一般都是使用git stash save "xxx"來添加一些注釋饵溅,如果不想添加注釋就執(zhí)行git stash妇萄。
2.git stash list
顯示當前保存工作進度的列表。這也可以說明git stash可以執(zhí)行多次轻掩。
3.git checkout 改動的分支名
用于修改工作區(qū)懦底,這個命令比較危險唇牧,因為會修改的工作區(qū)且無法撤銷聚唐。
4.git stash pop [-index] [stash_id]
在另一個分支改完之后,切換到正在開發(fā)的工作區(qū)扮惦,執(zhí)行當前命令,git會把工作區(qū)和暫存區(qū)都恢復到工作區(qū)径缅。
-
git stash pop
恢復最新的進度到工作區(qū)烙肺。git會把工作區(qū)和暫存區(qū)都恢復到工作區(qū)氧卧。 -
git stash pop --index
恢復最新的進度到工作區(qū)和暫存區(qū)。 -
git stash pop stash@{1}
恢復指定的進度到工作區(qū)沙绝。stash_id是通過git stash list命令得到的
通過git stash pop命令恢復進度后鼠锈,會刪除當前進度
git stash apply [-index] [stash_id]
除了不刪除恢復的進度之外星著,其余和git stash pop命令一樣
git stash drop [stash_id]
刪除一個存儲的進度,如果不指定stash_id虚循,默認刪除最新的
git stash clear
刪除所有暫存的進度
注意:
當我們拉去遠程代碼又不想提交當前開發(fā)的代碼,可以使用git stash命令將當前工作區(qū)保存起來铺遂,等到pull之后再還原(如果還原工作區(qū)的代碼和拉去的代碼有沖突需要手動解決沖突)
命令行:
git stash //暫存修改工作區(qū)
git pull //拉去遠端代碼
git stash pop stash@{0} //將工作區(qū)還原
注意:此操作為高危操作茎刚,如果沒有恢復暫存襟锐,刪除了暫存的stash膛锭,修改的內容就無法恢復了!