我将特性分支合并到开发分支,然后在Sprint的末尾将其合并到主分支,代码进入生产环境。如果您愿意,您可以这样做,但通常在Git Flow中,您不会直接将
develop
合并到
master
,因为您遇到的确切问题正是由此引起的:这可能会导致许多阻塞,因为需要将工作推送到主分支,在其他工作提交到develop之前进行测试和签署。
Git Flow避免这些问题的方法是使用
release
和
hotfix
分支。(有关详细信息,请参见
图表。)
您只需创建一个
release
分支进行发布前的测试,因此,在
develop
上工作永远不需要停止。(请注意,您不必从
develop
的末端创建
release
分支;您可以从任何您希望从中创建分支的先前提交开始创建分支。)
当您需要对生产环境进行热修复时,可以从
master
创建一个
hotfix
分支。
在您的代码从
release
或
hotfix
分支合并到
master
之后,然后您也会将
master
合并回
develop
。(或者您可以在将它们合并到
master
之前,将
release
和
hotfix
分支合并回
develop
,但在IMHO之后将
master
合并回来更加清晰和易于管理。)
注意:release
和
hotfix
分支通常是明确定义的,但是如果您目前没有使用它们,仍然可以在进行一些微小调整的情况下使用它们。例如,假设您拿出当前的
develop
并在某个地方开始测试构建,然后您喜欢它并想将其发布到生产环境中。您实际上有一个
release
分支,但它没有名称。它只是您测试过的提交ID。当您发布时,只需将该提交ID从
develop
合并到
master
而不是合并到可能在提交后进行了任何新代码的
develop
中。这样,您就不会合并任何新代码。本质上,这与创建专用的
release
分支相同,但实际上没有命名。热修复也是如此。通常,热修复是单个提交中的较小更改。我建议你从
master
分支切换到其他分支,但不必称之为
hotfix
;任何名称都可以。然后,将该分支PR到
master
中,并在完成后将
master
合并回
develop
,或者像Git Flow指出的那样,如果已存在
release
分支,则将
master
合并回
release
而不是
develop
(尽管如果您希望更快地修复该问题,则也可以将
release
合并回
develop
)。
另外注意:我听到的最常见的关于Git Flow的抱怨是它过于复杂。我认为对于某些组织来说,这种复杂性绝对必要,但对于其他组织来说则不必要。您可以自行选择要使用的部分,并在必要时进行调整。如果您还没有需要使用
release
分支,那太好了-只需调整您的工作流程以将来自
develop
的提交ID合并到
master
中即可。但是,如果您发现需要针对该提交ID进行错误修复,那么也许您可以在现场创建一个
release
分支。这样,您大多数时间都可以没有专用的
release
分支。