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 502 Bad Gateway错误原因及解决方案
Mar 31 Servers
nginx简单配置多个server的方法
Mar 31 Servers
nginx里的rewrite跳转的实现
Mar 31 Servers
Nginx反向代理及负载均衡如何实现(基于linux)
Mar 31 Servers
Nginx下配置Https证书详细过程
Apr 01 Servers
微信告警的zabbix监控系统 监控整个NGINX集群
Apr 18 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
Apr 29 Servers
docker 制作mysql镜像并自动安装
May 20 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
django项目、vue项目部署云服务器的详细过程
Jul 23 Servers
WIN10使用IIS部署ftp服务器详细教程
Aug 05 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清除数组中所有字符串两端空格的方法
2014/10/20 PHP
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
35个Python编程小技巧
2014/04/01 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
Python多进程fork()函数详解
2019/02/22 Python
django-allauth入门学习和使用详解
2019/07/03 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Python datetime包函数简单介绍
2019/08/28 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
什么是岗位职责
2013/11/12 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
运动会通讯稿100字
2014/01/31 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
文化产业实施方案
2014/06/07 职场文书
承租经营合作者协议书
2014/10/01 职场文书
2014年销售员工作总结
2014/12/01 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
运输公司工作总结
2015/08/11 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
Go 自定义package包设置与导入操作
2021/05/06 Golang