Git 流程问题,合并掌握和发展

Git flow question, merging to master and develop

我目前正在使用 git flow with sourcetree。冲刺的工作已达成一致,我创建了开发分支以将代码提交到其中。我将功能分支合并到开发中,然后在 sprint 结束时我合并到主分支并将代码投入生产。

这很好用,但是,如果修复需要推送到 master,或者如果其他工作被纳入 sprint,提交需要进行排序,然后 cherry pick 到 master,这会变得非常混乱。

这可能会导致很多阻碍,因为在将其他工作提交到开发之前,需要将工作推送到 master、测试和签署。

有没有办法安全地引入新工作并致力于开发?

按照下面的 git-flow 图片:

如果您需要修复一些需要花费大量时间的问题,您可以从 master 转到 develop(如果您有修复 css 、代码样式等快速任务,请开始大修复...) . 在您的情况下,您可以开始一个新功能,完成后您可以使用 :

合并开发
  • git合并
  • git 变基
  • git 樱桃挑选 或使用 git-flow 命令:
  • git 流功能完成

希望对你的工作有所帮助。

I merge the feature branches into develop, then at the end of sprint I merge to master and code goes into production.

如果您愿意,您当然可以这样做,但通常在 Git Flow 中,您不会将 develop 直接 合并到 master由于您 运行 的具体问题:

This can cause lots of blockers, as work needs to be pushed to master, tested and signed off before other work can be committed into develop.

Git Flow 避免这些问题的方法是使用 releasehotfix 分支。 (See diagram 了解详情。)

您只需在发布前创建一个 release 分支用于测试,因此 develop 的工作永远不必停止。 (请注意,您不必从 develop 的尖端创建一个 release 分支;您可以使用您希望从中分支的任何先前提交。)

当您需要对生产进行修补程序时,您可以创建 masterhotfix 分支。

在您的代码从 releasehotfix 分支合并到 master 之后,您还需要将 master 合并回 develop。 (或者您可以在将 releasehotfix 分支合并回 develop 之前将它们合并到 master,但是在将 master 合并回 master 之后恕我直言稍微干净一些更易于管理。)

旁注: releasehotfix 分支通常定义明确,但是,由于您目前在没有它们的情况下工作,您仍然 可以在没有它们的情况下工作,但有一些细微的调整。例如,假设您使用当前 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 分支,那很好 - 只需调整您的工作流程,以便在发布时仅将 develop 中的提交 ID 合并到 master 中。但是,如果您发现需要针对该提交 ID 进行错误修复,也许您可​​以即时创建一个 release 分支。这是你可以在没有专用 release 分支 大多数 时间的情况下获得。