我有两个分支,分别为test
和prod-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}相同) }。
为什么在还原为通用基本提交后不能合并分支?
答案 0 :(得分:1)
听起来您正在艰难地进行此操作。如果您希望prod-candidate
分支包含与test
分支相同的更改,最简单的方法是:
git checkout prod-candidate
git reset --hard test
这将有效地移动prod-candidate
指向与test
相同的提交。这意味着它将具有完全相同的修订历史记录。您也不必担心任何合并冲突。
注意
git revert
将创建一个新的提交,以撤消指定提交的更改。如果一次还原多个提交,则最终结果是一连串的提交,这些撤销撤消了先前提交中的更改。即使您最终在两个分支上拥有相同的内容,但它们具有两种不同的历史。您正在发生合并冲突,因为两个分支上的行以不同的方式更改了。 Git未检测到prod-candidate
中的代码行已更改回与共享父提交相同的内容。