日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

git?stash的正確用法詳解_相關技巧

作者:YunfengWang ? 更新時間: 2023-04-07 編程語言

概述

前段時間突然發現,我之前對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,且沒有任何提示,這意味著你所有隱藏的代碼都會被刪除,執行此命令前請三思!

原文鏈接:https://juejin.cn/post/7190224582974898237

欄目分類
最近更新