git stash用法總結


使用git的時候,我們往往使用分支(branch)解決任務切換問題,例如,我們往往會建一個自己的分支去修改和調試代碼, 如果別人或者自己發現原有的分支上有個不得不修改的bug,我們往往會把完成一半的代碼commit提交到本地倉庫,然后切換分支去修改bug,改好之后再切換回來。這樣的話往往log上會有大量不必要的記錄。如果我們不想提交完成一半或者不完善的代碼,但是卻不得不去修改一個緊急Bug,那么使用git stash就可以將你當前未提交到本地(和服務器)的代碼推入到Git的棧中,這時候你的工作區間和上一次提交的內容是完全一樣的,所以你可以放心的修Bug,等到修完Bug,提交到服務器上后,再使用git stash pop將以前一半的工作應用回來。git stash命令把未提交的修改儲存起來,用於后續的恢復。

常用的git stash命令:

  • git stash [save 'message']: git stash用於保存為提交的修改,已經commit的不適用了,加一個save可以添加備注信息,用於記錄版本。
  • git stash list:查看所有的stash。
  • git stash show :顯示做了哪些改動,默認show第一個存儲,如果要顯示其他存儲,后面加stash id,比如第二個 git stash show stash@{1},完整的差異可以使用git stash show -p。
  • git stash pop:將stash緩存堆棧中第一個stash也就是stash@{0}刪除,並將對應修改應用到當前的工作目錄下。
  • git stash apply:  將stash緩存堆棧中第一個stash應用到當前的工作目錄下,但是不會刪除緩存堆棧中的緩存,默認使用第一個存儲,即stash@{0},應用某個stash后面加stash id。
  • git stash drop stash@{$num} :刪除stash@{$num}存儲,從列表中刪除這個存儲,默認刪除第一個。
  • git stash clear:  刪除緩存堆棧中所有存儲。
  • git stash branch <name>:這條命令會根據最近的 stash 創建一個新的分支,然后刪除最近的 stash(和 stash pop 一樣),如果你需要某個 stash可以指明 stash id。

默認情況下,git stash會緩存下列文件:

  • 添加到暫存區的修改(staged changes)
  • Git跟蹤的但並未添加到暫存區的修改(unstaged changes)

但不會緩存以下文件:

  • 在工作目錄中新的文件(untracked files)
  • 被忽略的文件(ignored files)

git stash命令提供了參數用於緩存上面兩種類型的文件。使用-u或者--include-untracked可以stash untracked文件。使用-a或者--all命令可以stash當前目錄下的所有修改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM