cherry-pick 能干啥?

cherry-pick 的翻译是择优挑选,使用git cherry-pick命令,可以选择将现有的一个或者多个提交的修改引入当前内容。

cherry-pick应用场景

假设你现在正在开发一个项目,有一个功能分支 feature,开发分支 develop。 feature 有3个提交,分别是 A ,B ,C 。develop 分支只想加入 C 功能, 此时合并操作无法满足,因为直接合并 feature,会将3个提交都合并上,我想合并就只有 C,不要 A,B。

此时就需要挑樱桃大法–cherry pick!

cherry-pick使用:

命令方式:

  • 切换到 develop 分支。
  • 通过 git log feature,找到 C 的 SHA1 值。
  • 通过 git cherry-pick <C的SHA1> ,将 C 的修改内容合并到当前内容分支 develop 中。
  • 若无冲突,过程就已经完成了。如果有冲突,按正常冲突解决流程即可。

Idea菜单方式

我目前的代码分支是2198,目标上线分支是2243。后面2243的代码review后会合并都hotfix分支上。

  1. 切换分支到目标分支2243上
  2. 打开Versin Control面板
  3. 在版本控制面板点开Log标签
  4. 修改分支为要cherry pick的分支
  5. 点选最后一个按钮,可以把已经合并过来的提交置灰。这一步可选
  6. 在下面选择要cherry pick的提交,按住ctrl键选多条,然后点选倒数第二个按钮进行cherry pick
  7. 接下来IDEA会依次把每一次提交弹出来让你写提交消息(使用默认的就行)。前面选了多条就会弹多次,所以不要急。
  8. 最后把提交的代码Push掉就好了。

cherry-pick VS merge

从上面简单的小例子上看,我想,小伙伴们,都应该已经对 merge 和 cherry-pick 有了大概的区分,这里做下对比,让大家有个清晰明确的掌握,防止似是而非,以后误操作。

  • git merge :将两个提交历史合并。
  • git cherry-pick:将提交对应的内容合并。

这里,非常需要明确的一点,commit 代表的是修改!

例中,提交 C 的内容,就是对比 B 上面做的修改,可能是创建了一个文件,或者修改了一个词语。那么 C 内容就是一个文件的添加,和一个词语的修改。

以提交 C 为结束点的提交历史,实际内容是提交 C 和 C 之前所有的修改。

  • cherry-pick 操作的对象就是 commit。
  • merge 操作的对象就是 commit history。

所以,使用的时候,你要知道,你想要的什么。

cherry-pick其他命令

git cherry-pick <commits>

挑选多个提交合并,提交之间用空格相隔。

例如,git cherry-pick 4d2951 e4cdff9

git cherry-pick <start-commit>..<end-commit>

挑选一个范围的多个提交合并,但是这个语法对应操作区别是左开右闭,不包含start-commit。另外要注意两个commit 之间要求有连续关系的,并且前者要在后者之前,顺序不能颠倒。

git cherry-pick <start-commit>^..<end-commit>

这个和git cherry-pick <start-commit>..<end-commit>一样,区别就是加了一个^符号,就变成闭区间了,包含 start-commit。

git cherry-pick <branch name>

挑选 branch 最顶端的提交

git cherry-pick --continue

继续下个操作

git cherry-pick --quit

退出

git cherry-pick --abort

停止本次操作

以上是关于 cherry-pick 操作控制命令,当 cherry-pick 多个提交时,假设遇到冲突,--continue继续进行下个,--quit结束 cherry-pick 操作,但是不会影响冲突之前多个提交中已经成功的,--abort直接打回原形,回到 cherry-pick 前的状态,包括多个提交中已经成功的。

参考文章:https://blog.csdn.net/qq_32452623/article/details/79449534

Git:cherry-pick应用一个分支某些现有提交,到另外一个分支相关推荐

  1. IDEA git cherry pick 简单使用

    cherry pick的作用: 参考了一些博客, eg: 参考博客1 参考博客2 再做了个小案例后,我目前的理解是,cherry pick的作用是将一个分支的部分提交/历史提交,可以合并到另外一个分支 ...

  2. git cherry pick

    直接将选定的其他分支的commit,提交到该分支上 不建议使用 git rebase --onto 使用cherry pick代替 http://weblog.avp-ptr.de/20120928/ ...

  3. 【git cherry pick冲突】

    修好了bug愉快的打算commit提交的时候 看到提示语句是can not commit changes due to unresolved conflicts 在Android Studio中寻找图 ...

  4. git 创建远程分支,并提交代码到该分支的操作

    1. 首先,在本地创建这个分支 使用命令 git checkout -b 分支名 (表示创建这个分支,并且切换到该分支) 2. 创建远程分支 使用命令 git push --set-upstream ...

  5. idea cherry pick 功能 git log 窗口 冲突conflict

    git log 窗口 参考 source tree cherry pick, merge conflict merge conflict 冲突 <<<<<<< ...

  6. 1.Cherry Pick与Create Patch的区别

    Cherry Pick与Create Patch的区别 结论 实验 场景1:应用时无冲突 场景2: 应用时产生冲突 使用cherry pick 使用patch 场景3:产生冲突,并且有其他文件的变更 ...

  7. idea怎么提交到dev分支_idea中新建git分支,并提交到远程github

    一.IDEA连接github,创建本地仓库和远程github仓库 2. idea创建本地仓库,连接github远程仓库.参考:idea中将项目与github关联 二.IDEA中创建本地分支,并提交到远 ...

  8. git 拉取远程其他分支代码_【记录】git 拉取远程分支代码,同步到另一个git上...

    最近有需求从某git 上拉取所有分支代码同步到另一git上,现记录操作步骤,以便日后使用: 1:先克隆其中一个分支代码到本地环境 git clone -b test http://账号:密码@XXX. ...

  9. 在gerrit上cherry pick多笔提交到一个仓库中

    我们的要求是在dvr_service仓库上从其他分支cherry pick 两笔提交到release/b03chn_rel_sop_3_nobo分支 这两笔提交分别如图所示 如图所示,B02-5746 ...

最新文章

  1. Java 25 岁,发展现状大曝光!程序员的机会来了
  2. 云服务器和VPS服务器有什么区别?
  3. 运行时间_一种简单、实用的测量程序运行时间的方法
  4. 100万“愤怒的小鸟”:中国手机开发者生存调查
  5. SSIS数据转换组件_复制转换、数据转换、行计数
  6. sap.ui.layout.form.SimpleForm.prototype
  7. ONVIF协议网络摄像机(IPC)客户端程序开发(3):理解什么是Web Services
  8. c语言三元运算符_了解C / C ++中的三元运算符
  9. Vlan 划分和 VLan间DHCP 分配
  10. COGS2421 简单的Treap
  11. 深度学习框架PyTorch:入门与实践 学习(四)
  12. M2Det的学习过程
  13. salt 安装kubernetes集群3节点
  14. 项目管理软件推荐:项目计划变更管理太方便了
  15. java爬虫爬豆瓣图书_网络爬虫——爬取豆瓣图书
  16. Potplayer如何显示书签,书签编辑器
  17. 苹果macbook air安装win7系统详细图解
  18. Eclipse 配置JDK
  19. bim软件电脑配置测试,bim软件对电脑配置要求,这样配置经济又实惠
  20. Google Chrome 应用商店上传扩展程序

热门文章

  1. 【MIUI9_7.12.05】小米6 sagit 高通骁龙835 基于安卓N(Android 7.1)时间刺客修改精简优化版本
  2. 移动硬盘无法识别,参数错误的问题## 标题
  3. 生活中我们的那些疑惑
  4. python编写我爱你_我爱你Python——情人节快乐
  5. 腾讯广告算法大赛2019相关概念
  6. linux centos yum源配置为nexus镜像源
  7. Mastodon 长毛象多租户:自定义域名、自定义账号别名
  8. 全球居然还有 2 亿多 IPv4 地址未分配
  9. Delta型腿机器狗全动作展示
  10. 简单理解call_user_func和call_user_func_array两个函数