Git merge在分支之间恢复到通用版本后发现冲突

时间:2018-08-18 02:26:31

标签: git merge git-merge git-revert

我有两个分支,分别为testprod-candidate。这两个分支在其历史中有一个共同的提交a0e378cfe28,该提交最初在测试分支中,后来又合并为prod-candidate。提交之后,两个分支采用不同的方式,并与它们关联其他提交。

现在是时候再次将测试合并到prod-candidate中了,所以我希望通过将prod-candidate分支中的所有提交还原为commit a0e378cfe28,我可以进行合并而不会出现问题。我进行了还原,并通过运行git diff能够验证还原是否成功,因为prod-candidate分支与提交a0e378cfe28的内容完全相同。

不幸的是,在签出prod-candidate并运行git merge test之后,我在POM文件中遇到了冲突,我不明白为什么。测试分支具有版本为18.4.0-101的POM和prod-candidate,候选版本在还原之前为版本18.3.0-204,当前版本为18.3.0-101(与提交{{1}相同) }。

为什么在还原为通用基本提交后不能合并分支?

1 个答案:

答案 0 :(得分:1)

听起来您正在艰难地进行此操作。如果您希望prod-candidate分支包含与test分支相同的更改,最简单的方法是:

git checkout prod-candidate
git reset --hard test

这将有效地移动prod-candidate指向与test相同的提交。这意味着它将具有完全相同的修订历史记录。您也不必担心任何合并冲突。

注意

git revert将创建一个新的提交,以撤消指定提交的更改。如果一次还原多个提交,则最终结果是一连串的提交,这些撤销撤消了先前提交中的更改。即使您最终在两个分支上拥有相同的内容,但它们具有两种不同的历史。您正在发生合并冲突,因为两个分支上的行以不同的方式更改了。 Git未检测到prod-candidate中的代码行已更改回与共享父提交相同的内容。