1. 程式人生 > 實用技巧 >git stash 用法總結和注意點

git stash 用法總結和注意點

常用git stash命令:

(1)git stashsave "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 showstash@{1}-p

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

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

(7)git stash drop

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

(8)git stash clear刪除所有快取的stash

說明:新增的檔案,直接執行stash是不會被儲存的,舉例如下:

如上圖:在git status 那一步很明顯可以看出來,我修改了README,添加了新檔案abc.txt,然後執行了git stash save後,在執行git stash list 可以看到剛才的save是的資訊,然後使用git stash show ,只顯示了README的改動被存起來了。

我們知道,執行了git statsh 以後,被存起來的在當前目錄再執行git status 就看不到了,但是我們現在再執行git status,如下:

這個檔案還在,說明沒有被存起來。說白了就是沒有在git 版本控制中的檔案,是不能被git stash 存起來的。

那要怎麼辦呢,這個檔案我也想存起來,很明顯,先執行下git add 加到git版本控制中,然後再git stash就可以了,如下:

最後一步可以看出來,這個新增檔案已經被stash了。

這個時候再執行下git status ,被存起來的在當前目錄就看不到了,如下:

這個時候,想切分支就再也不會報錯有改動未提交了。

如果要應用這些stash,直接使用git stash apply或者git stash pop就可以再次匯出來了。

總結下:git add 只是把檔案加到git 版本控制裡,並不等於就被stash起來了,git add和git stash 沒有必然的關係,但是執行git stash 能正確儲存的前提是檔案必須在git 版本控制中才行。

參考的一個連結中說到了以下,我摘錄此處備份下(就是隻stash一部分檔案):

常規 git stash 的一個限制是它會一下暫存所有的檔案。有時,只備份某些檔案更為方便,讓另外一些與程式碼庫保持一致。一個非常有用的技巧,用來備份部分檔案:

  1. add 那些你不想備份的檔案(例如: git add file1.js, file2.js)
  2. 呼叫 git stash –keep-index。只會備份那些沒有被add的檔案。
  3. 呼叫 git reset 取消已經add的檔案的備份,繼續自己的工作。

參考連結:

https://blog.csdn.net/jeffasd/article/details/53107182

http://www.cppblog.com/deercoder/archive/2011/11/13/160007.aspx

https://blog.csdn.net/baidu_21578557/article/details/52137324

https://blog.csdn.net/kingboyworld/article/details/76408819

https://blog.csdn.net/AndyNikolas/article/details/79906132