我应该将 master 合并到一个功能分支中以使其更新吗?这会被认为是不好的做法吗?

Should I merge master into a feature branch to bring it up to date? Would this be considered bad practice?

我有这样的情况:

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

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

当功能分支可能会或可能不会与其他开发人员共享时,重复将 master 合并到功能分支然后将功能返回到 master 是否有任何缺点?

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

$ git checkout feature-x
$ git rebase master

这给你:

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

据我了解,将 master 合并到您的功能分支并不是什么坏习惯。 @larsks 的回答提供了一些关于如何使用变基的有用信息,这是一个选项。但一定要遵循黄金法则"Do not rebase commits that exist outside your repository"(see Perils of rebasing).

澄清一下:'commits that exist outside your repository' 将是 public(推送)提交。

如果您想知道变基是否比合并好,反之亦然,我建议您查看:'Rebase vs. Merge'。文章指出,这个问题的答案取决于您和您的团队认为什么最适合您的项目。

对于较大的项目,我喜欢历史记录来准确显示发生的事情。因此,在我工作的地方,我们通常将 master 合并到我们的功能分支中,以使它们与最新代码保持同步。不过,我不一定认为这是每个人的全球最佳实践。但是,这也不被认为是不好的做法。

有些人喜欢干净的历史记录,因此对他们来说,变基可能是更好的选择。