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处理http请求实现过程解析
Mar 31 Servers
Nginx下配置Https证书详细过程
Apr 01 Servers
Nginx使用Lua模块实现WAF的原理解析
Sep 04 Servers
Nginx缓存设置案例详解
Sep 15 Servers
基于Apache Hudi在Google云构建数据湖平台的思路详解
Apr 07 Servers
在Docker容器中部署SQL Server
Apr 11 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
nginx配置限速限流基于内置模块
May 02 Servers
docker 制作mysql镜像并自动安装
May 20 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
Nginx 502 bad gateway错误解决的九种方案及原因
Aug 14 Servers
ubuntu开机后ROS程序自启动问题
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版本号
2006/10/09 PHP
php str_pad 函数使用详解
2009/01/13 PHP
PHP编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
PHP 验证登陆类分享
2015/03/13 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
javascript制作sql转换为stringBuffer的小工具
2015/04/03 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
python如何实现数据的线性拟合
2019/07/19 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
动态密码技术
2012/10/18 面试题
电大毕业个人生自我鉴定
2014/03/26 职场文书
毕业生就业协议书
2014/04/11 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
小学生作文评语大全
2014/04/21 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL