1. 程式人生 > >【git命令】git-stash

【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 stash

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

注:如果要加備註資訊可以用: git stash save "我的備註資訊",當棧內有多個資訊時,可以知道自己要恢復哪個資訊

  • git stash apply

應用某個儲存,但不會把儲存從儲存列表中刪除,預設使用第一個儲存,即stash@{0},如果要使用其他個,git stash apply stash@{$num} , 比如第二個:git stash apply stash@{1}

  • git stash pop

從Git棧中讀取最近一次儲存的內容,恢復工作區的相關內容。

恢復之前快取的工作目錄,將快取堆疊中的對應stash刪除,並將對應修改應用到當前的工作目錄下,預設為第一個stash,即stash@{0},如果要應用並刪除其他stash,命令:git stash pop stash@{$num} ,比如應用並刪除第二個:git stash pop stash@{1}

和 git stash apply 不同的是,applay 不會刪除快取, 而pop會

其中 pop 和 apply 的不同,就是 pop 的時候,會把list中取出記錄刪除掉,而apply只取出,其實就是 git pop 相當於 git apply + git drop

  • git stash list

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

  • git stash show

具體顯示快取概變更的內容,預設show第一個儲存,如果要顯示其他存貯,後面加stash@{$num},比如第二個 git stash show stash@{1}

git stash show -p : 顯示第一個儲存的改動,如果想顯示其他存儲存,命令:git stash show stash@{$num} -p ,比如第二個:git stash show stash@{1} -p

  • git stash drop stash@{$num}

丟棄stash@{$num}儲存,從列表中刪除這個儲存

  • git stash clear

清空Git棧, 刪除