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