我应该将主分支合并到功能分支以使其保持最新状态吗?这样做是否被视为不良做法?

20

我有一个类似这样的情况:

            (master)
A - B - E - F
      \       
        C - D
            (feature-x)

如果我需要将关键修复E和F合并到feature-x分支以继续开发,并且打算将其合并回master,则我是否应该将master合并到feature-x?

在feature分支可能与其他开发人员共享或不共享的情况下,重复将master合并到特性分支,然后再将特性合并回master是否有任何缺点?

2个回答

15

处理这种情况的最常见工作流程可能是将您的功能分支git rebase到主分支上:

$ git checkout feature-x
$ git rebase master

这将给您:

            (master)
A - B - E - F
             \       
               C - D
                   (feature-x)

7
为了解决feature-x与其他开发人员共享的情况,将其合并到master分支中会更好。 - chepner
3
master 分支合并到 feature-x 分支或将 feature-x 分支变基到 master 分支的选择是主观的。这两种方法都有其优缺点。 - Chris
谢谢,这很简单易懂。 - wO_o
1
只是想指出,rebase 将产生提交 C'D',而不仅仅是 CD —— rebase 将为这些提交创建新的哈希值,同时保持完全相同的更改。 - rmoralesdelgado

13
据我所了解,将主分支合并到功能分支中并不被视为不良的做法。@larks的答案提供了一些关于如何使用变基的好信息,这是一个选项。但务必遵循“不要变基存在于您仓库之外的提交”的黄金规则(请参阅变基的危险)
澄清一下:“存在于您仓库之外的提交”是指公共(已推送)提交。
如果您想知道变基是否比合并更好,我建议您查看:“变基与合并”。该文章指出,这取决于你和你的团队认为对你的项目最好。
对于大型项目,我喜欢历史记录显示确切发生了什么。所以在我们工作的地方,我们通常将主分支合并到我们的功能分支中,以使它们与最新的代码保持同步。虽然,我不会认为这是全局最佳实践,但也不被认为是不良的做法。
有些人喜欢非常干净的历史记录,所以对于他们来说,变基可能被认为是更好的选择。

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