如何使用Git Flow合并已经在Develop中的一些(而不是全部)特性分支?

3
我使用Git Flow来组织我的工作流程。有时我们会遇到这样的问题:功能已经合并到develop分支并部署到staging,但客户只想要一些被接受的功能上线。此时我们就有了一个问题,因为我不能将develop合并到master,因为它包含客户不想在生产环境中使用的功能。
举个例子,假设我有4个分支:master develop feature-1feature-2master是当前生产状态。 develop是当前staging状态,并用作新功能的起点。
假设一个开发人员正在feature-1上工作,他们完成了,将其合并请求返回到develop,客户接受了新功能,并准备进行进一步的集成测试。现在他们开始在feature-2上工作,与之前一样。
客户要求上线feature-2但不需要feature-1。此时我们陷入了困境,因为feature-2已经包括了feature-1的提交。
我想出了以下解决方案:
  • 告诉客户,很抱歉,feature-1也需要部署(客户不满意)
  • master分支分支出去,并将feature-2挑选到它里面(不好)
  • 删除develop分支,仅使用master分支来处理需要进入生产的功能。问题在于更难的集成测试,以及功能彼此依赖(有时客户在开发继续进行时需要很长时间才能做出响应/测试)。
我正在寻找一种方法来改变我的工作流程,以允许某些功能分支合并到主分支,但不是全部。同时,我不想通过不将功能合并回develop来妨碍我的开发人员,因为大多数情况下,开发速度非常快,而且功能可能相互依赖。
1个回答

1

我看到这里有两个选项,你提到了其中一个:

1. 回答你的问题,你可以使用 GitHub flow 或者 GitLab flow ,例如仅使用主分支 master 直接合并功能而不需要开发分支 develop,但在我看来(我们也在使用 GitFlow),你需要有经验的开发人员,而且我不知道学习新工作流程的成本是否值得。 2. 即使这不完全是你所问的,我会选择 Feature Flagging,它允许你在想要部署时部署,准备好发布时再发布。新功能从 develop 分支合并到 master 分支,并可以在运行时使用标志单独激活。这样,你可以启用 feature-2,但不启用 feature-1,两者都可以部署。Launchdarkly 有 开源 SDK 可用,尽管你也可以自己实现。

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