Git merge 在恢复到分支之间的通用版本后发现冲突
Git merge finds conflict after reverting to common version between branches
我有两个分支,分别是 test
和 prod-candidate
。这两个分支在它们的历史中有一个共同的提交,a0e378cfe28
,它最初是在测试分支中,后来被合并到 prod-candidate 中。在这次提交之后,这两个分支走上了不同的道路,并且有其他的提交与之相关联。
现在是时候再次将测试合并到 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
中的代码行已更改回与共享父提交相同的内容。
我有两个分支,分别是 test
和 prod-candidate
。这两个分支在它们的历史中有一个共同的提交,a0e378cfe28
,它最初是在测试分支中,后来被合并到 prod-candidate 中。在这次提交之后,这两个分支走上了不同的道路,并且有其他的提交与之相关联。
现在是时候再次将测试合并到 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
中的代码行已更改回与共享父提交相同的内容。