首頁 > 軟體

git stash的正確用法詳解

2023-02-08 22:02:10

概述

前段時間突然發現,我之前對git stash的使用都是錯誤的。

具體說來,我是這麼使用的:在遠端有新的提交,需要git pull來拉取合併時,發現本地有一些未提交的修改,功能也沒實現,不適合做一次commit。這時候我執行git stash隱藏原生的修改,然後執行git pull來拉取遠端的更新,在最新程式碼基礎上重新實現stash的那些程式碼中的功能。

這裡的問題是,重新實現stash程式碼中的那一步,其實完全可以用git stash pop來替代,執行這個命令會在最新程式碼基礎上作用stash的程式碼,不用再重新實現一遍了(不過這時可能會有程式碼衝突需要解決)。所以我之前是把git stashgit checkout -- .來用了,也就是拋棄了原生的程式碼更新,顯然是有問題的。

正確流程基本上是這樣:

git stash # 或者 git stash push,效果一樣
git pull # 可能有衝突需要手動合併
git stash pop # 可能有衝突需要手動合併

下面記錄一下 git stash 提供的功能和一些引數。

git stash 具體用法

git stash建立一個新的stash,效果與git stash push 一樣,效果如下:

$ git stash
Saved working directory and index state WIP on master: c6771a5 doc: fix error during pre-commiting

增加-u選項可以將未track的檔案也隱藏起來。

你可以建立多個stash,最早的stash表示為stash@{0},然後是stash@{1},依次遞加。

git stash list 會列出所有的stash:

$ git stash list
stash@{0}: WIP on master: c6771a5 doc: fix error during pre-commiting
stash@{1}: WIP on master: c6771a5 doc: fix error during pre-commiting

git stash show可以檢視最新stash中的修改,加上編號可以檢視之前版本的修改。

$ git stash show stash@{0}
version.txt | 1 +
 1 file changed, 1 insertion(+)

git stash apply 可以應用最新的stash到當前的程式碼中,同樣的,如果加上編號則可以應用之前版本的修改到當前程式碼。apply執行後記得呼叫git stash drop 來去除以及應用的stash。 git stash pop效果等於git stash apply + git stash drop

git stash branch會基於老的提交程式碼建立一個分支,同時把最新的修改也作用過去,這樣對於新的提交和老提交程式碼變化很大的場景比較好,避免在新的提交上apply stash時由於衝突太多造成的合併問題。

git stash clean 會清空所有的stash,且沒有任何提示,這意味著你所有隱藏的程式碼都會被刪除,執行此命令前請三思!

以上就是git stash的正確用法詳解的詳細內容,更多關於git stash用法的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com