git stash用法總結
阿新 • • 發佈:2022-04-01
使用git的時候,我們往往使用分支(branch)解決任務切換問題,例如,我們往往會建一個自己的分支去修改和除錯程式碼, 如果別人或者自己發現原有的分支上有個不得不修改的bug,我們往往會把完成一半的程式碼commit
提交到本地倉庫,然後切換分支去修改bug,改好之後再切換回來。這樣的話往往log上會有大量不必要的記錄。如果我們不想提交完成一半或者不完善的程式碼,但是卻不得不去修改一個緊急Bug,那麼使用git stash
就可以將你當前未提交到本地(和伺服器)的程式碼推入到Git的棧中,這時候你的工作區間和上一次提交的內容是完全一樣的,所以你可以放心的修Bug,等到修完Bug,提交到伺服器上後,再使用git stash pop
常用的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
- 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當前目錄下的所有修改。