[英]Git flow question, merging to master and develop
我目前正在将 git 流与 sourcetree 一起使用。 sprint 的工作已达成一致,我创建了开发分支以将代码提交到其中。 我将功能分支合并到开发中,然后在冲刺结束时合并到主分支,代码进入生产。
这很好用,但是,如果修复需要推送到 master 或者如果其他工作被购买到 sprint,则需要对提交进行排序并将樱桃挑选到 master 中,这可能会变得非常混乱。
这可能会导致很多阻碍,因为在其他工作可以提交到开发之前,需要将工作推送到主控、测试和签署。
有没有办法安全地引入新工作并致力于开发?
我将功能分支合并到开发中,然后在冲刺结束时合并到主分支,代码进入生产。
如果您愿意,您当然可以这样做,但通常在 Git 流程中,您不会直接将develop
合并到master
中,因为您遇到的确切问题是:
这可能会导致很多阻碍,因为在其他工作可以提交到开发之前,需要将工作推送到主控、测试和签署。
Git Flow 避免这些问题的方法是使用release
和hotfix
分支。 ( 详见图表。)
您只需在发布之前创建一个release
分支进行测试,因此develop
工作永远不必停止。 (请注意,您不必从develop
的尖端创建release
分支;您可以使用您希望从中分支的任何先前提交。)
当您需要在生产环境中进行修补程序时,您可以从master
创建一个hotfix
分支。
在您的代码从release
或hotfix
分支合并到master
之后,您还将master
合并回develop
。 (或者您可以在将release
和hotfix
分支合并到 development 之前develop
它们合并到master
,但是在将master
合并回来之后,恕我直言,它稍微更干净,更容易管理。)
旁注: release
和hotfix
分支通常是明确定义的,但是,由于您当前在没有它们的情况下工作,您仍然可以在没有它们的情况下工作,但需要进行一些细微的调整。 例如,假设您进行当前的develop
并开始在某个地方测试构建,然后您喜欢它并希望将其发布到生产中。 您实际上有一个release
分支,但它没有命名。 这只是您测试的提交 ID。 当您发布时,只需将该提交 ID 从develop
合并到master
而不是develop
可能在该提交之前。 这样,您就不会在开始测试后合并到develop
中发生的任何新代码。 本质上,这与创建一个专门的release
分支相同,但没有实际命名它。 修补程序也是如此。 通常,修补程序是单个提交中的微小更改。 我建议将 master 分支到某个分支,但不必将其称为hotfix
; 任何名字都可以。 然后将该分支 PR 到master
并在完成后将master
合并回develop
,或者,正如 Git Flow 指出的那样,如果release
分支已经存在,则将master
合并回release
而不是develop
(尽管您也可以将release
合并回develop
如果你想尽快修复)。
旁注:我听到的关于 Git Flow 的最常见抱怨是它过于复杂。 我发现复杂性对于某些组织是绝对必要的,当然对于其他组织则不是必需的。 您可以选择要使用的部分,并在必要时进行调整。 如果您还不需要release
分支,那就太好了 - 只需调整您的工作流程,以便在发布时仅将提交 ID 从develop
合并到master
。 但是,如果您发现需要针对该提交 ID 进行错误修复,那么您可能可以即时创建release
分支。 大多数时候你可以在没有专门的release
分支的情况下度过难关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.