網站首頁 編程語言 正文
git cherry-pick可以選擇某一個分支中的一個或幾個commit(s)來進行操作。例如,假設我們有個穩定版本的分支,叫v2.0,另外還有個開發版本的分支v3.0,我們不能直接把兩個分支合并,這樣會導致穩定版本混亂,但是又想增加一個v3.0中的功能到v2.0中,這里就可以使用cherry-pick了,其實也就是對已經存在的commit 進行再次提交。
簡單用法:
git cherry-pick <commit id>
例如:
$ git checkout v2.0分支
$ git cherry-pick 38361a55 # 這個 38361a55 號碼,位于v3.0分支中:
$ git log
commit 38361a55138140827b31b72f8bbfd88b3705d77a
Author: Justin Justin@xxx.com
Date: Sat Dec 10 00:11:44 2016 +0800
1. 如果順利,就會正常提交。結果:
Finished one cherry-pick.
On branch v2.0分支
Your branch is ahead of 'origin/old_cc' by 3 commits.
2. 如果在cherry-pick 的過程中出現了沖突
Automatic cherry-pick failed.
After resolving the conflicts,mark the corrected paths with 'git add <paths>' or 'git rm <paths>'and commit the result with:
git commit -c 15a2b6c61927e5aed6111de89ad9dafba939a90b
或者:
error: could not apply 0549563... dev
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
就跟普通的沖突一樣,手工解決:
2.1 $ git status # 看哪些文件出現沖突
both modified: app/models/MainActivity.java
2.2 $ vim app/models/MainActivity.java # 手動解決它。
2.3 $ git add app/models/MainActivity.java
2.4 git commit -c <新的commit號碼>
2.5 再次cherry-pick剩余commit
若提示:
error: a cherry-pick or revert is already in progress
hint: try "git cherry-pick (--continue | --quit | --abort)"
fatal: cherry-pick failed
則執行對應操作:
git cherry-pick --continue
git cherry-pick --quit
git cherry-pick --abort
命令集合:
git cherry-pick <commit id>:單獨合并一個提交
git cherry-pick -x <commit id>:同上,不同點:保留原提交者信息。
Git從1.7.2版本開始支持批量cherry-pick,就是一次可以cherry-pick一個區間的commit。
git cherry-pick <start-commit-id>..<end-commit-id>
git cherry-pick <start-commit-id>^..<end-commit-id>
前者表示把<start-commit-id>到<end-commit-id>之間(左開右閉,不包含start-commit-id)的提交cherry-pick到當前分支;
后者有"^"標志的表示把<start-commit-id>到<end-commit-id>之間(閉區間,包含start-commit-id)的提交cherry-pick到當前分支。
其中,<start-commit-id>到<end-commit-id>只需要commit-id的前6位即可,并且<start-commit-id>在時間上必須早于<end-commit-id>
注:以上合并,需要手動push代碼。
以上內容總結如下:
1.git checkout master //此操作需要切換到master分支
2.git pull
3.git cherry-pick xxxxxx
4.git status
5.編譯提交等
原文鏈接:https://www.cnblogs.com/chenyablog/p/8484556.html
相關推薦
- 2023-03-01 多語言切換在Androidx失效的踩坑解決記錄_Android
- 2023-06-17 詳解Flask數據庫的連接與使用_python
- 2022-03-31 Docker使用鏡像倉庫的方法_docker
- 2022-04-27 VSCode?IDE?配置環境過程解析_C 語言
- 2022-06-26 Python基礎必備之語法結構詳解_python
- 2022-06-29 C語言實例梳理講解常用關鍵字的用法_C 語言
- 2022-06-12 C語言數學問題與簡單DP01背包問題詳解_C 語言
- 2022-12-30 解決React報錯useNavigate()?may?be?used?only?in?context
- 最近更新
-
- 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同步修改后的遠程分支