Git cherry-pick后再merge出现一个“奇怪”的现象

背景描述:有的时候基于一个master branch拉出一个独立feature分支做开发时,两条分支都在并行开发,如果master分支增加了某些功能,解决了某些关键bug,而独立feature分支不需要所有的增加的commit,只需要某一笔的修复,此时首先想到的就是单独cherry-pick该笔commit,然而后续如果再次将该feature merge回master,“奇怪”的现象发生了….

举例说明:

git仓库以ngnix代码为例,不知道什么时候clone的代码,分支还在unstable branch上。。。

  • 以unstable分支为基础checkout一个test1分支。
  • 在unstable分支上提交一笔commit bb3200604fcd3cefe26fb23bd6747f5563f514ac
  • 在test1 branch上cherry-pick该笔commit,commit id为9b97d6038a14e348f50a7b44f2a0a29af54aa820
  • 回到unstable分支,merge test1 branch,出现下面的现象:

    unstable分支merge test1 branch后的graph线路图

为什么感到”奇怪“
  • 起初我的想法时merge合并后,不会出现merge commit,也只会存在同样的一笔commit,这样看起来会很清爽,而如果出现两笔一模一样的commit,看起来会很疑惑。虽然代码没有任何问题,而且如果在提交多笔commit后再merge,大部分人都不会主要到这个现象,所以应该很少人主要到这个“问题”。
  • 由于个人多少对代码有点洁癖,当发现这个现象时蛮奇怪的,为什么git不能智能记录两个branch cherry-pick的过程,在merge时只保留一个(最好是master branch上的)commit?(这点是完全可以做到的啊),不过事实就是目前的状态了。
为什么会这样?
  • cherry-pick在Git中的处理应该只是将一个commit的修改重新add, commit,push到另一个branch上,并没有记录之间的关联。
  • 当merge时,认为另外一个branch只是做了完全相同的修改,并没有冲突,所以完整的保留两个branch上的commit。
后续如何处理
  • 虽然以上的解释很充分,原理上完全没有问题,不过对于这样的两笔一模一样的commit,感官上还是不爽的,所以我决定尽量不在需要merge回去的branch上cherry-pick父branch上的commit了。
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值