出發前先講故事:項目正在test分支更新版本我們瘋狂的寫bug,突然沒更新前的版本出bug了(意料之中),此時呢我們要切換到master分支去改bug。此時此刻我test分支上修改的文件還不想提交,但是切換分支會提示我錯誤有文件未提交(如圖一)。那么現在我們一起學習一下 git stash 吧!
(圖一)
現在直接輸入 git stash 命令,將當前分支存起來,id為adad619 實名制購票
接下來我們就可以隨意切換分支了,等你切換到其他分支再切回來的時候,我們想恢復剛剛存儲的文件。
現在先輸入 git stash list 命令去查看我們“存儲”的列表
可以看到我們剛剛存儲id為 ‘adad619 實名制購票’ 的信息
有兩種方式我們可以恢復
一、用 git stash apply 命令恢復,但是恢復后,stash內容並不刪除,這時候再執行 git stash list 命令,id 為 adad619 實名制購票 的儲藏項目還會在列表中,你需要用 git stash drop 來刪除;
注意: 如果有一個分支上多個 stash,如果需要恢復指定的 stash ,可以在命令尾部加id,如 git stash apply stash@{0} ,同樣刪除指定 stash 項目則執行如 git stash drop stash@{1} 。
二、用 git stash pop 命令,恢復的同時把 stash 存儲列表的內容也刪了。這時候再執行 git stash list 命令,id 為 adad619 實名制購票 的儲藏項目不會在列表中。
此時再查看 cat <filename> 會發現之前的改動還存在,且執行 git status 就會繼續顯示該分支上有改動未提交。
====================================================================================
到這里就算結束了。但是我相信大家可能看到 git stash 命令都比較陌生那么請仔細看一下下面的相關介紹吧!
常用git stash命令:
(1)git stash save "save message" : 執行存儲時,添加備注,方便查找,只有git stash 也要可以的,但查找時不方便識別。
(2)git stash list :查看stash了哪些存儲
(3)git stash show :顯示做了哪些改動,默認show第一個存儲,如果要顯示其他存貯,后面加stash@{$num},比如第二個 git stash show stash@{1}
(4)git stash show -p : 顯示第一個存儲的改動,如果想顯示其他存存儲,命令:git stash show stash@{$num} -p ,比如第二個:git stash show stash@{1} -p
(5)git stash apply :應用某個存儲,但不會把存儲從存儲列表中刪除,默認使用第一個存儲,即stash@{0},如果要使用其他個,git stash apply stash@{$num} , 比如第二個:git stash apply stash@{1}
(6)git stash pop :命令恢復之前緩存的工作目錄,將緩存堆棧中的對應stash刪除,並將對應修改應用到當前的工作目錄下,默認為第一個stash,即stash@{0},如果要應用並刪除其他stash,命令:git stash pop stash@{$num} ,比如應用並刪除第二個:git stash pop stash@{1}
(7)git stash drop stash@{$num} :丟棄stash@{$num}存儲,從列表中刪除這個存儲
(8)git stash clear :
刪除所有緩存的stash