Git-cherry pick

Git-cherry pick

实习开发中遇到的一个情况:客户有一个定制化需求,基于客户使用的现场版本是2.5.0,结果产品经理对接错了版本,以至于前后端的开发都是基于2.6.0版本来做的,直到最后打包部署上线时无法部署才发现这个问题…

针对解决方案,师兄让我先尝试cherry pick,如果解决不了的话就只能手搓代码了

最后结果是前后端都通过git的cherry pick解决了问题,之前都不知道这个技术,所以来记录学习这个趣名技术🍒

适应场景

在利用Git管理的多分支代码库中,将代码从一个分支转移到另一个分支是常见需求。

这时分两种情况:

  1. 需要另一个分支的所有代码变动,那么就采用合并(git merge);
  2. 只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。

针对情况2中的需要部分代码变更,有什么场景呢?

  1. 修复bug
    • 如果在某个分支上修复了一个bug,那么可以通过 cherrt-pick 将这个修复提交到替他分支,而不需要合并整个分支
  2. 提取特定功能
    • 如果某个分支上开发了一个新功能,想将这个功能的提交应用到其他分支,也可以使用 cherrt-pick,比如在客户的定制化版本上做了一个审计日志的字段补全功能,可以将其也迁移到saas主版本上
  3. 避免合并冲突
    • 但那个两个分支的差异较大,直接合并可能会导致冲突,则可以通过 cherrt-pick选择性提交,比如这次的事故就是这种情况

idea实操

cherrt-pick 的整体操作都是类似于merge的:

  1. 切换到目标分支a

  2. 在待pick分支b的commit中选中想要复制的提交

    在这里插入图片描述

  3. 点击小樱桃进行合并

    在这里插入图片描述

  4. 解决冲突

合并过程中少不了出现冲突需要手动处理,大致过程如下

  1. 点击冲突,进入冲突详情页

在这里插入图片描述

  1. 通过点击箭头来快速进行版本比对选择
    在这里插入图片描述

  2. 解决所有冲突点击apply后改动就会有一次自动commit让你选择,你也可以取消后手动commit,可以看到改动过已经进入待commit列表了(如果选择的是多次commit,则会对每个commit依次检测冲突,提交commit)

    在这里插入图片描述

有关git还是有很多要学习的地方,即使在写这篇文章的时候,分支切来切去还是被搞昏了,多分支管理这一块…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值