Git rebase --onto遇冲突:不解合并共同祖先输出及冲突原因
问题:变基到master时出现意外冲突的原因?
我有一个基于develop分支的feature分支,仅包含一个提交。因为功能需提前上线,我决定将feature分支变基到master分支,执行的命令如下:
git checkout feature git rebase --onto origin/master HEAD~
变基过程中遇到了冲突,diff3格式的输出如下:
<<<<<<< origin/master ||||||| merged common ancestors some code I didn't touch ======= same code I didn't touch code I added in my commit on feature >>>>>>>
我本以为不会出现冲突,因为我仅新增了代码,未修改现有代码。此外,那段未改动的代码存在于基于develop的feature分支中,但既不在我的提交里,也不在origin/master中,我无法理解它为何会出现在合并共同祖先部分。
执行git merge-base --all HEAD origin/master时,输出的是origin/master的最新提交,该提交并不包含那段未改动的代码。
我认为变基的输出应如下所示(无冲突,仅作预期展示):
<<<<<<< origin/master ||||||| merged common ancestors ======= code I added in feature >>>>>>>
那段未改动的代码不应出现在任何位置,因为它既不在origin/master也不在我的提交中。我原以为执行的rebase --onto命令效果等同于将feature的唯一提交cherry-pick到origin/master之上(解决冲突后确实会达到该效果)。
我忽略了什么?
内容的提问来源于stack exchange,提问作者PrOpoLo
相关产品推荐
相关产品推荐

