使用Git将未合并的特性分支合并到另一个特性分支

22
我的公司有一个Git工作流程,如下所示:
  • 从原始分支创建特性分支(我们使用一个名为"develop"的基础分支,但您可以将其视为"master")
  • 在此特性分支中完成您需要完成的工作,并提交您的更改
  • 偶尔,将您的特性分支与develop分支合并
  • 当您的特性分支的工作完成后,提交并推送到GitHub上的远程特性分支
  • 创建拉取请求以将您的特性分支合并到develop分支中,并由另一位开发人员进行代码审查
  • 完成代码审查后,将特性分支合并到develop分支中,并删除特性分支
这个流程在处理串行工作流时有效,但是当您从特性分支中推送您的更改并等待其他开发人员审查和合并您的更改时,您可能希望承担另一个工作,这意味着重复上述过程。
在我们的情况下,我们目前是从develop分支创建我们的特性分支,因此我刚刚完成的工作尚不可用(它仍然处于空中状态,等待另一位开发人员将其合并到develop分支中)。我的问题是,如果我在我的新特性分支中正在进行的工作依赖于我在先前的特性分支中刚刚完成的工作,那么我应该最初从尚未合并的特性分支而不是develop分支创建我的新特性分支吗?如果我已经从develop分支创建了我的新特性分支,获取我在尚未合并的分支中缺少的更改是否可以简单地在我的新分支内做一个git merge [未合并的分支]
希望这个解释以及工作流本身都是有意义的。我已经让自己陷入了一些奇怪的情况,我不清楚我的代码状态,所以我正在尝试找出一个工作流程,使我能够在任何时候合并来自其他特性分支的更改,同时仍然能够获得上游更改。

4
从develop分支创建新分支并将您未经批准的特性分支合并,与直接从特性分支创建新分支本质上是相同的。 - aet
2
你解释得非常好。我不想等待代码审查才能开始下一个功能。 - Matt
1个回答

7
我有一个问题,如果我在新功能分支中的工作依赖于我刚刚完成的先前功能分支中的工作,那么我应该最初将我的新功能分支从尚未合并的功能分支而不是develop分支分支出来吗?
按照您的描述,是的。但是,我担心可能会走上“未经批准/未经审查”的工作道路,因为如果您的代码审查结果需要进行重大更改,您可能会发现自己需要重新做很多工作。
如果我已经从develop分支创建了我的新功能分支,那么获取我在尚未合并的分支中缺少的更改是否只需在我的新分支内执行git merge [unmerged-branch]就可以了?
是的,应该可以。 :)

1
你的第一条评论是我最关心的问题之一:依赖未经批准的工作。如果需要对正在审核的分支进行更改,则还需要将我在该分支中所做的更改合并到我的新功能分支中,这就开始变得棘手了。幸运的是,我实际上无法预见会有多个功能分支在同一时间由任何开发人员进行审核,因此也许这并不是完全痛苦的。 - Monkey34
我在合并时也使用了压缩提交的流程,这样做有什么区别吗?我将feature1分支的5个提交合并到feature2分支中,然后在develop分支上进行了一次变基(其中包含1个合并提交),这样做会产生冲突吗?谢谢。 - Zavael

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