【问题标题】:How to avoid merge conflits with multiple branch merges?如何避免与多个分支合并的合并冲突?
【发布时间】:2012-02-14 23:48:44
【问题描述】:

我正在与一个中型团队一起开发一个 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

但是,我们确实还需要他在另一个分支中开发的一些样式,所以我正在考虑在我们将他的另一个分支重新合并到 dev 后立即将 development 重新定位到我的分支中:

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

这样,我需要处理的分支将拥有他的两个分支中我需要的代码,但将从开发中重新定位以希望减少冲突。我担心的是,当他尝试将分支 2 合并回开发时,他可能会遇到很多问题。他会不会有很多矛盾?有没有更好的办法?

【问题讨论】:

    标签: git git-branch git-merge


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您遇到的问题是,通过合并您会引入您想要的更改和一些您不想要的更改。

      让你的特征更小。

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

      使用 rerere 使重新合并更容易。

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

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

      【讨论】:

        猜你喜欢
        • 2014-11-27
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        • 2013-06-16
        • 2016-12-18
        • 2014-08-13
        • 2018-03-03
        • 2020-01-24
        相关资源
        最近更新 更多