Git:如何避免在先前合并还原后合并功能分支时发生冲突

Posted

技术标签:

【中文标题】Git:如何避免在先前合并还原后合并功能分支时发生冲突【英文标题】:Git: How to avoid conflicts on merging a feature branch after a previous merge revert 【发布时间】:2013-06-16 03:11:43 【问题描述】:

在我们的存储库中,我们基于功能分支开发功能。最近我在master 中集成了一个功能feature/myfeature

git merge --no-ff feature/myfeature

在这次合并之后,发生了更多的开发,直到结果证明这个功能有问题并阻止了集成,所以我决定恢复这个合并。在https://***.com/a/6217372/1237653 之后,我选择了在不破坏历史记录的情况下恢复合并的唯一选项:

git revert -m 1 commit_hash

与此同时,master 的更多开发已经发生,并且作者添加了修复提交。现在我想再次运行以集成/合并该功能。不幸的是,现在我遇到了十几个冲突,因为第一次应用和恢复与第二次尝试接触的代码行完全相同。

git merge --no-ff feature/myfeature
<pointless conflicts all over>

我怎样才能重新应用我之前恢复的功能分支,而不会出现那些毫无意义的冲突?

我尝试-s recursive -Xrenormalize 没有运气。 Rebase 也会导致同样的冲突。

【问题讨论】:

作为一种“解决方法”,我通过手动将其所有提交精选到覆盖旧分支的新分支中来破坏功能分支的历史记录。感觉又丑又丑。 【参考方案1】:

您应该恢复恢复提交,而不是第二次合并您恢复的分支。我的意思是字面意思,

git revert <sha1>

其中sha1 是您之前的@​​987654323@ 所做的提交。

【讨论】:

谢谢!我认为这个解决方案存在一些可用性缺陷,因为在那之后我必须再次重新应用/合并功能分支以捕获剩余的更改。如果再次失败,那么一切都会变成四倍......

以上是关于Git:如何避免在先前合并还原后合并功能分支时发生冲突的主要内容,如果未能解决你的问题,请参考以下文章

显示先前git合并中涉及的提交

如何在不合并先前分支的更改的情况下合并分支

还原合并提交后解决合并冲突

git分支合并为啥会发生冲突

合并后的 Git 分支和提交历史记录

合并后修订如何与功能分支关联?