關於Git Stash的用法:

git stash: 備份當前的工作區的內容,從最近的一次提交中讀取相關內容,讓工作區保證和上次提交的內容一致。同時,將當前的工作區內容保存到Git棧中。

git stash pop: 從Git棧中讀取最近一次保存的內容,恢復工作區的相關內容。由於可能存在多個Stash的內容,所以用棧來管理,pop會從最近的一個stash中讀取內容並恢復。

git stash list: 顯示Git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。

git stash clear: 清空Git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。

git stash apply :從Git棧中讀取一次保存的內容,恢復工作區的相關內容,但不清除棧中的內容;

關於Git Stash的詳細解釋,適用場合,這裡做一個說明:

使用git的時候,我們往往使用branch解決任務切換問題,例如,我們往往會建一個自己的分支去修改和調試代碼, 如果別人或者自己發現原有的分支上有個不得不修改的bug,我們往往會把完成一半的代碼 commit提交到本地倉庫,然後切換分支去修改bug,改好之後再切換回來。這樣的話往往log上會有大量不必要的記錄。其實如果我們不想提交完成一半或者不完善的代碼,但是卻不得不去修改一個緊急Bug,那麼使用git stash就可以將你當前未提交到本地(和伺服器)的代碼推入到Git的棧中,這時候你的工作區間和上一次提交的內容是完全一樣的,所以你可以放心的修 Bug,等到修完Bug,提交到伺服器上後,再使用git stash apply將以前一半的工作應用回來。也許有的人會說,那我可不可以多次將未提交的代碼壓入到棧中?答案是可以的。當你多次使用git stash命令後,你的棧里將充滿了未提交的代碼,這時候你會對將哪個版本應用回來有些困惑,git stash list命令可以將當前的Git棧信息列印出來,你只需要將找到對應的版本號,例如使用git stash apply stash@{1}就可以將你指定版本號為stash@{1}的工作取出來,當你將所有的棧都應用回來的時候,可以使用git stash clear來將棧清空。

在這裡順便提下git format-patch -n , n是具體某個數字, 例如 git format-patch -1 這時便會根據log生成一個對應的補丁,如果 git format-patch -2 那麼便會生成2個補丁,當然前提是你的log上有至少有兩個記錄。

看過上面的信息,就可以知道使用場合了:當前工作區內容已被修改,但是並未完成。這時Boss來了,說前面的分支上面有一個Bug,需要立即修復。可是我又不想提交目前的修改,因為修改沒有完成。但是,不提交的話,又沒有辦法checkout到前面的分支。此時用Git Stash就相當於備份工作區了。然後在Checkout過去修改,就能夠達到保存當前工作區,並及時恢復的作用。

推薦閱讀:

相关文章