当我尝试将feature
分支合并到master
时,我偶尔会遇到合并冲突。
现在显而易见的解决方案是在合并期间手动解决冲突。
但是,使用基于 pull-request 的工作流程(github,gitlab,...),这在某种程度上是次优的,因为它将所有工作放在实际负责的人身上合并分支,而不是提交者。
一个有用的解决方案是在提交PR之前将master
合并到feature
,修复所有冲突。
但是,我觉得这不必要地使git历史变得复杂。
所以我想知道,是否有一种(简单)方法来准备feature
分支,以便它可以干净地合并到master
(之后这两个分支的事实分歧很大)。
理想情况下,修复可以在多次提交中完成。
答案 0 :(得分:0)
如果可以覆盖feature
分支,则可以在提交拉取请求之前使用rebase
(或者在此期间在master
上引入更改后)。
Rebase不会创建额外的"合并"承诺。它将通过创建新提交(新的SHA)来重写历史记录。您可以在git-scm.com/docs/git-rebase上详细了解相关信息。另外,请查看有关differences between merge and rebase commands。
的文章重新定位在代码审核过程中也很有用。您可以提交新的拉取请求,以便有人可以删除评论。然后,您可以通过添加fixup commits来改进代码。您的团队可以再次进行代码审查,但现在他们只能检查新引入的更改。最后,您只需rebase all fixup commits,强制推送您的分支并合并代码。
请注意,只有单独使用该分支时,此方法才可以。当其他人在同一个分支上工作时,你永远不应该改变分支的历史(和强制推送)。
答案 1 :(得分:0)
我不知道。我认为最简单的方法是将master
合并到feature
分支,然后再提交拉取请求(PR),如您在问题中所述。这就是feature
分支可以与master
完全合并的方式。我不知道它是否简单,但干净。
就个人而言,我遵循一些广泛使用且非常常见的项目结构的基本准则。首先,面向对象的项目结构以及适当的打包对于避免合并冲突是有效的。这个想法是为了减少几个人在同一个文件中工作的机会,但可以在同一个分支中一起工作。
我认为一些常见的git实践总是有用的。其中一些是经常提交,经常从主人提取并解决小合并冲突,如果有任何等。
以前很难解决项目中的所有冲突。但是,几乎每个IDE都与IDE一起提供解决冲突工具,以便我们可以直观地检查和合并那些存在冲突的代码。我认为使用常见的git实践以及标准项目结构可以大大减少合并冲突。除此之外,将master
合并到feature
分支是在提交拉取请求之前使事情正确的干净方法。