網站首頁 編程語言 正文
概述
前段時間突然發現,我之前對git stash
的使用都是錯誤的。
具體說來,我是這么使用的:在遠端有新的提交,需要git pull
來拉取合并時,發現本地有一些未提交的修改,功能也沒實現,不適合做一次commit。這時候我執行git stash
隱藏本地的修改,然后執行git pull
來拉取遠端的更新,在最新代碼基礎上重新實現stash的那些代碼中的功能。
這里的問題是,重新實現stash代碼中的那一步,其實完全可以用git stash pop
來替代,執行這個命令會在最新代碼基礎上作用stash的代碼,不用再重新實現一遍了(不過這時可能會有代碼沖突需要解決)。所以我之前是把git stash
當git 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
相關推薦
- 2021-12-10 解決線上Oracle連接耗時過長的問題現象_oracle
- 2022-10-10 pycharm創建并使用虛擬環境的詳細圖文教程_python
- 2022-07-13 k8s 之 kubectl 提示 “The connection to the server loc
- 2022-10-21 C#中匿名方法與委托的關系介紹_C#教程
- 2022-12-25 pytorch中model.named_parameters()與model.parameters(
- 2022-04-11 蝴蝶優化算法及實現源碼_相關技巧
- 2022-04-17 uniapp 實現無感刷新token, 適應大多數項目
- 2023-07-25 使用SpringBoot+JWT+MybatisPlus實現簡單的登陸狀態驗證
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支