惠城网站设计,网站虚拟主机哪个好,php开发微信小程序,无锡网站建设信息有限背景描述#xff1a;有的时候基于一个master branch拉出一个独立feature分支做开发时#xff0c;两条分支都在并行开发#xff0c;如果master分支增加了某些功能#xff0c;解决了某些关键bug#xff0c;而独立feature分支不需要所有的增加的commit#xff0c;只需要某一… 背景描述有的时候基于一个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该笔commitcommit id为9b97d6038a14e348f50a7b44f2a0a29af54aa820回到unstable分支merge test1 branch出现下面的现象
为什么感到”奇怪“
起初我的想法时merge合并后不会出现merge commit也只会存在同样的一笔commit这样看起来会很清爽而如果出现两笔一模一样的commit看起来会很疑惑。虽然代码没有任何问题而且如果在提交多笔commit后再merge大部分人都不会主要到这个现象所以应该很少人主要到这个“问题”。由于个人多少对代码有点洁癖当发现这个现象时蛮奇怪的为什么git不能智能记录两个branch cherry-pick的过程在merge时只保留一个最好是master branch上的commit这点是完全可以做到的啊不过事实就是目前的状态了。
为什么会这样
cherry-pick在Git中的处理应该只是将一个commit的修改重新add commitpush到另一个branch上并没有记录之间的关联。当merge时认为另外一个branch只是做了完全相同的修改并没有冲突所以完整的保留两个branch上的commit。
后续如何处理
虽然以上的解释很充分原理上完全没有问题不过对于这样的两笔一模一样的commit感官上还是不爽的所以我决定尽量不在需要merge回去的branch上cherry-pick父branch上的commit了。