git中cherry-pick命令的使用教程


Posted in Servers onJune 25, 2022

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.编译提交等

到此这篇关于git中cherry-pick命令的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

Servers 相关文章推荐
fastdfs+nginx集群搭建的实现
Mar 31 Servers
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
Apr 04 Servers
Nginx进程调度问题详解
Sep 25 Servers
Nginx下SSL证书安装部署步骤介绍
Dec 06 Servers
Apache Hudi的多版本清理服务彻底讲解
Mar 31 Servers
HDFS免重启挂载新磁盘
Apr 06 Servers
阿里云 Windows server 2019 配置FTP
Apr 28 Servers
centos7安装mysql5.7经验记录
May 02 Servers
netty 实现tomcat的示例代码
Jun 05 Servers
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
Aug 05 Servers
修改Nginx配置返回指定content-type的方法
Sep 23 Servers
Fluentd搭建日志收集服务
Sep 23 Servers
解决Git推送错误non-fast-forward的方法
Jun 25 #Servers
Win2008系统搭建DHCP服务器
windows server2008 开启端口的实现方法
Windows10安装Apache2.4的方法步骤
Linux下搭建SFTP服务器的命令详解
Jun 25 #Servers
Nginx安装配置详解
win sever 2022如何占用操作主机角色
Jun 25 #Servers
You might like
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
PHP 组件化编程技巧
2009/06/06 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
记录Django开发心得
2014/07/16 Python
用python与文件进行交互的方法
2018/03/01 Python
PyTorch实现AlexNet示例
2020/01/14 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
大学生的四年学习自我评价
2013/12/13 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
运动会广播稿50字
2014/01/26 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书