将分支合并到主分支的Git操作

7

如果你从主分支fork一个分支,然后在这个分支上开发新功能...当需要合并回主分支时,我听说有两种不同的方法:

  1. 首先将主分支合并到功能分支中,然后再将该分支合并回主分支。
  2. 将你的分支合并到主分支中。

有人能告诉我哪种方法更好,如果第一种方法有实际好处吗?

或者还有更好的方法吗?

3个回答

2
假设您从主分支创建了 feature-sev,同时我创建了 feature-eric。我的分支修改了与您相同的文件;事实上,它们发生了重叠,以至于我们的 git 客户端无法理解。我先完成开发并合并了我的变更。
在这种情况下,您必须不可避免地解决冲突。
CONFLICT (content): Merge conflict in stackoverflow.html
Automatic merge failed; fix conflicts and then commit the result.

如果您选择了(1),则将主干合并到分支,确保一切看起来都很好,您将通过在feature-sev中生成一个合并提交的方式解决冲突。如果在解决冲突期间犯了任何错误,您可以回滚它们而不需要对主干进行直接修改。这是很好的。
如果您选择了(2),则将通过直接向主干提交合并提交的方式解决冲突。如果出现任何错误,您将破坏主干。这是很糟糕的。

1

我猜这取决于情况;-)

需要考虑以下几点:

  • 在合并后,您是否仍需要功能分支?如果是这样,将master合并到它中,并合并回master可能很有用。如果不需要,那么如果您打算删除它,将合并到功能分支就没有太多意义。
  • 您是否可以破坏本地的master分支工作副本?如果不行,应避免合并可能导致您需要手动解决大量冲突的代码到master。如果可以,请继续。

总的来说,我认为这取决于您如何使用git。

由于我通常只临时使用功能分支,并在成功完成功能并将其合并到master后删除它们,因此我通常直接合并到master,然后删除其他分支。

另一方面,我可以想象可能存在某些情况,反过来做可能会有用。但只要没有强烈的理由,我会尽量避免这样做。一次合并就足够了;-)。


1
理论上来说,没有区别。您有一个分支中的一组更改,将其与另一个分支中的一组更改合并。这些更改最终在哪里并不重要。
实际上,最好将更改合并到功能分支中,因为它为您提供了一个隔离的地方来解决冲突。如果功能分支已经开发了很长时间,这尤其重要,因为通常会出现一些微妙的冲突,在第一次提交后才能解决。
最佳方法是定期从主分支更新到功能分支,从而减少在功能开发结束时出现冲突的可能性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接