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 相关文章推荐
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
May 26 Servers
使用 Apache Dubbo 实现远程通信(微服务架构)
Feb 12 Servers
Apache Linkis 中间件架构及快速安装步骤
Mar 16 Servers
Dashboard管理Kubernetes集群与API访问配置
Apr 01 Servers
docker-compose部署Yapi的方法
Apr 08 Servers
阿里云日志过滤器配置日志服务
Apr 09 Servers
openstack云计算keystone组件工作介绍
Apr 20 Servers
Win Server2016远程桌面如何允许多用户同时登录
Jun 10 Servers
Linux中sftp常用命令整理
Jun 28 Servers
Centos7 Shell编程之正则表达式、文本处理工具详解
Aug 05 Servers
Elasticsearch6.2服务器升配后的bug(避坑指南)
Sep 23 Servers
keepalived + nginx 实现高可用方案
Dec 24 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
php旋转图片90度的方法
2013/11/07 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
PHP基于Closure类创建匿名函数的方法详解
2017/08/17 PHP
jquery.validate分组验证代码
2011/03/17 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Python lambda和Python def区别分析
2014/11/30 Python
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
详解Python中where()函数的用法
2018/03/27 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
python中的decorator的作用详解
2018/07/26 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
Python秒算24点实现及原理详解
2019/07/29 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
国际贸易求职信
2014/07/05 职场文书
药店促销活动总结
2014/07/10 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
员工考勤管理制度
2015/08/06 职场文书
python实现高效的遗传算法
2021/04/07 Python
Python Django ORM连表正反操作技巧
2021/06/13 Python