如何避免与多个分支合并的合并冲突?

时间:2012-02-14 23:48:44

标签: git git-branch git-merge

我正在开发一个中型团队的Web应用程序。我们正在使用Git对该项目进行版本控制/统一编码。在我的同事和我之间,我认为我们即将遇到困难的合并,我想看看在遇到麻烦之前我们能做些什么更好。

我们主要在开发分支上的Git工作:

D-E-F-G

我的同事创建了一个分支来进行重大改变:

     A
    /
D-E-F-G

然后我拉下那个分支,修复了一些错误,并准备将其合并。同时,我的同事开始了另一个功能的新分支:

     A-B-C-D
    /
D-E-F-G-H-I-J
      \
       A-B-C

现在,我需要创建一个使用同事新分支中的样式的新功能,但是他的新分支需要做更多的工作才能合并回到开发中,所以我分支他的分支当他的东西被合并回来时,利用他的风格并保持一致的外观:

     A-B-C-D
    /
D-E-F-G-H-I-J
      \
       A-B-C..
           \
            A

但是,我们真的还需要他在他的另一个分支中开发的一些样式,所以当我们将其他分支合并到开发中时,我正在考虑将变形发展到我的分支:

     branch 1: A-B-C-D
              /       \
 develop: D-E-F-G-H-I-J..
                 \      \
        branch 2: A-B-C..\
                       \  \
              branch 3: A-B..

这样,我需要处理的分支将拥有我需要的两个分支代码,但是已经从开发中重新定义到希望减少冲突。我担心的是,当他试图将分支2合并为开发时,他可能会遇到很多问题。他会有很多冲突吗?我们能做些什么更好的事情吗?

2 个答案:

答案 0 :(得分:2)

对于这个答案,我将从你的解释中假设两件事:

  • develop是一个可随时部署的分支,它可以接收错误修复提交并可随时部署(或发布)(如果你不这样做,我强烈建议你这样做:P) 。
  • 您只有两名开发人员正在开发功能。因此,您不会在develop分支上拥有重要功能。

因此,我建议您创建一个名为feature-integration的分支,该分支每天都会使用develop进行重新定位(或者当您在develop分支上进行更改时)。然后,当您的同事完成其工作的重要部分时,他可以将他的代码合并到feature-integration分支中,您可以将其用于开发变基feature-integration到您的工作分支。您(以及您的同事)也应该使用feature-integration定期(我建议每天或至少每周一次)更新您的工作分支代码以保持代码更新并解决开发过程中的一些最终冲突,因此,当您决定将其合并到develop时,您不会有痛苦的合并。

答案 1 :(得分:0)

您遇到的问题是,通过合并,您正在引入您想要的更改以及您不想要的更改。

让您的功能更小。

从一个共同点开始你的功能 - 无论一开始感觉多么笨拙。

使用rerere可以更轻松地重新出现。

这在我的每个功能分支帖子中总结:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/