使用 Git 将未合并的功能分支合并到另一个功能分支

Posted

技术标签:

【中文标题】使用 Git 将未合并的功能分支合并到另一个功能分支【英文标题】:Merge non-merged feature branch into another feature branch with Git 【发布时间】:2013-12-05 09:14:08 【问题描述】:

我的公司有一个如下所示的 Git 工作流程:

从原始分支创建功能分支(我们使用名为“develop”的基本分支,但您可以将其视为“master”) 在此功能分支中完成您需要做的工作,并提交您的更改 有时,将您的功能分支重新设置为开发分支 功能分支中的工作完成后,提交并推送到 GitHub 上的远程功能分支 创建拉取请求以将您的功能分支合并到开发分支中,由其他开发人员审核代码 一旦代码审查完成,特性分支合并到开发分支,特性分支被删除

当您处理串行工作流时,这很有效,但是当您从功能分支推送更改并等待其他开发人员审查和合并您的更改时,您可能希望承担另一部分工作,这意味着重复上述过程。

在我们的例子中,我们目前正在从开发分支创建我们的功能分支,因此我刚刚完成的工作尚不可用(它仍处于不确定状态,等待其他开发人员将其合并到开发分支中)。我的问题是,如果我在 new 功能分支中所做的工作取决于我刚刚在之前的功能分支中完成的工作怎么办?我应该最初从我尚未合并的功能分支而不是开发分支中分支我的新功能分支吗?如果我已经从开发分支创建了我的新功能分支,是否可以像在我的新分支中执行 git merge [unmerged-branch] 一样简单地从未合并的分支中获取我缺少的更改?

希望这个解释 - 以及工作流程本身! - 说得通。我让自己陷入了一些奇怪的情况,我不清楚我的代码状态,所以我试图找出一个工作流程,让我能够灵活地合并来自其他功能分支的更改,同时仍然可以随时获取上游更改时间。

【问题讨论】:

从开发分支并合并未批准的功能分支实际上与从功能分支分支相同。 你已经解释得很完美了。我不想等待代码审查才能开始使用下一个功能。 【参考方案1】:

我的问题是,如果我在新功能中所做的工作会怎样? 分支取决于我刚刚在上一个功能中完成的工作 分支?我应该最初从我的分支分支我的新功能分支吗? 迄今为止尚未合并的功能分支而不是开发分支?

你描述它的方式,是的,你会的。但是,我担心可能会走上“未批准/未审查”工作的道路,好像您的代码审查导致重大更改,您可能会发现自己重做很多工作。

如果我已经从开发分支创建了新功能分支, 从未合并的分支中获取我缺少的更改很简单 就像在我的新分支中做一个 git merge [unmerged-branch]?

是的。应该。 :)

【讨论】:

您的第一条评论是我的主要担忧之一:依赖未经批准的工作。如果我需要对正在审查的分支进行更改,那么我还需要将我在该分支中所做的更改合并到我的新功能分支中,并且它开始变得毛茸茸。幸运的是,对于任何给定的开发人员,我无法真正预见到会同时审查多个功能分支的情况,所以也许这并不完全痛苦。 我在合并时与壁球提交有相同的流程,这有什么不同吗?我合并了 feature1 分支信息 feature2 分支的 5 个提交,然后在开发分支上进行了 rebase(它有 1 个合并提交),rebase 会产生冲突吗?谢谢

以上是关于使用 Git 将未合并的功能分支合并到另一个功能分支的主要内容,如果未能解决你的问题,请参考以下文章

Git:如何防止特定的提交被合并到另一个分支中?

Git - 如何合并功能分支,但排除一些提交?

如何将多个提交合并到另一个分支上作为单个压缩提交?

git 合并某分支某次commit到另一个分支

Git:如何使用 VS Code 源代码控制将功能分支合并到主分支?

Git 在将两个分支合并到主(主)分支之前将一个开发人员分支合并到另一个开发人员分支