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



我有两个分支,分别是testprod-candidate。这两个分支在其历史记录中有一个共同的提交,a0e378cfe28,它最初在测试分支中,后来合并到 prod-candidate 中。在此提交之后,两个分支以不同的方式进行,并具有与之关联的其他提交。

现在是时候再次将测试合并到生产候选中了,所以我希望通过将 prod-candidate 分支中的所有提交恢复回提交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(与提交a0e378cfe28相同(。

为什么恢复到公共基本提交后无法合并分支?

听起来你正在以艰难的方式做到这一点。如果希望prod-candidate分支包含与test分支相同的更改,最简单的方法是执行以下操作:

git checkout prod-candidate
git reset --hard test

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

注意

git revert将创建一个新的提交,用于撤消指定提交的更改。如果还原多个提交,一次还原一个,则最终结果是一系列提交,用于撤消先前提交中的更改。即使您最终在两个分支上都有相同的内容,它们也具有两个不同的历史记录。您遇到合并冲突,因为两个分支上的行都以不同的方式更改。Git 不会检测到prod-candidate中的代码行已更改回与共享父提交相同的内容。

最新更新