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 相关文章推荐
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Filebeat 采集 Nginx 日志的方法
Mar 31 Servers
nginx 防盗链防爬虫配置详解
Mar 31 Servers
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
Sep 25 Servers
Nginx速查手册及常见问题
Apr 07 Servers
Consul在linux环境的集群部署
Apr 08 Servers
Linux下使用C语言代码搭建一个简单的HTTP服务器
Apr 13 Servers
Ubuntu Server 安装Tomcat并配置systemctl
Apr 28 Servers
项目中Nginx多级代理是如何获取客户端的真实IP地址
May 30 Servers
Windows Server 修改远程桌面端口的实现
Jun 25 Servers
解决Git推送错误non-fast-forward的方法
Jun 25 Servers
Valheim服务器 Mod修改安装教程 【ValheimPlus】
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+curl 发送图片处理代码分享
2015/07/09 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
2015/11/27 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
jQuery toggle()设置CSS样式
2009/11/05 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
Python获取apk文件URL地址实例
2013/11/01 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
python 2.7.14安装图文教程
2018/04/08 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
python实现中文文本分句的例子
2019/07/15 Python
python实现单链表的方法示例
2019/09/03 Python
使用python绘制二维图形示例
2019/11/22 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
教学大赛获奖感言
2014/01/15 职场文书
高二化学教学反思
2014/01/30 职场文书
李白故里导游词
2015/02/12 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL