繁体   English   中英

GitFlow:发布分支和主分支有什么区别?

[英]GitFlow: what is difference between release and master branches?

我刚刚查看了这个 gitflow 备忘单 我不明白release分支。

谁能告诉我release分支和master分支之间的区别?

区别在于目标和过程。 当您准备即将发布的版本时,通常会创建release分支。 当您应该发布的所有feature分支都已经合并到develop分支时,您从develop分支创建release分支并仅提交错误修复或一些配置更改。 换句话说,您尝试使其尽可能稳定。 当希望release分支足够稳定时,您可以将其合并回developmaster分支。 master分支的目的是始终拥有可以部署到生产环境的项目的最新稳定版本。 您永远不会直接提交到 master 分支,只能从releasehotfix分支合并到它。 还可以配置 CI/CD 工具,以便在master分支中的任何更新上部署到生产环境。

一旦你想要在你的版本中拥有的所有特性都在开发中,而不是“锁定”开发到任何新的提交,你创建一个 relase 分支,它将包含你下一个版本中预期的所有特性(而不是在 master 中,因为你的整个版本应该被测试并且可能会有一些错误修复......)。

  • 在这个分支中,您只有错误修复、文档等...但没有新功能
  • 你的开发分支没有被锁定,所以下一个版本的新特性仍然可以提交/推送到开发和测试。
  • 发布分支非常适合部署在 staging/pre-prod 环境中,并让 QA 测试您的发布。
  • 发布分支稳定后,您可以将其合并到 master 并转到 prod。 大师应该永远稳定和稳定(如果不是你做修补程序)。

您可以查看这些链接以获得进一步的解释:

https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow http://nvie.com/posts/a-successful-git-branching-model/#feature-branches

我认为您的问题来自我经常看到的对 GitFlow 的误解。 所以值得揭穿它。

在 GitFlow 中,发布分支是短暂的。 它们用于准备发布。 发布分支的好处是它可以让一个团队完善当前即将发布的版本,而另一个团队继续为下一个版本开发功能。 相反, master分支永远存在。

在 GitFlow 中,您不会从发布分支发布到生产环境。 这不是发布分支的用途。 误解可能来自“发布分支”这个名称。 master分支必须反映实际的生产价值发布。 您将发布分支合并到master分支,然后从master分支发布(即创建工件)用于生产环境。 用于生产环境的工件总是源自 GitFlow 中的master分支。 您不能在任何其他分支的生产环境中拥有工件。 本质上,每次合并到master都是 GitFlow 模型中的一个新的官方版本。

一旦发布结束(一旦你将它合并到master ),发布分支就会再次消失,我发现从随后不久被删除的分支发布到生产环境是灾难性的。

对某些人来说,以上似乎是有争议的。 但我认为这是原始论文中描述的经典 GitFlow 思想。 您会发现有些人实际上是从他们的发布分支中创建构建工件,然后他们将其放入生产环境中。 当他们看到它有效时,他们也会返回并将其合并到master中。 (否则他们会忘记这一步)。 我不认为那是 GitFlow。

部署到生产环境中的工件来自另一个分支而不是master的工作流根本不是 GitFlow。 对于某些人来说,这可能是一个很好的工作流程,它可能有它的优势,但它不是 GitFlow。

所以简而言之,这是经典的 GitFlow,您可以清楚地看到发布分支和master分支之间的区别:

  1. 在名为release/<something>的分支上准备发布。
  2. 准备发布时:将发布分支合并到master中。 然后删除您的发布分支(它不再有目的)。
  3. 使用版本号标记master ,例如5.9.1
  4. master上的标签创建可部署的工件。 您现在有一个版本(可能用于生产环境)。 您现在在所有环境中测试这些工件:测试、登台等。如果测试失败(尽管您在合并到master之前已经完成了测试),那么您必须接受您现在有一个5.9.1版本废纸篓。 和它一起生活! 然后,您必须从新的发布分支重新开始,例如release/5.9.2
  5. 您最终可以将测试的工件放入生产环境。 如果事实证明新版本在生产环境中存在问题(尽管进行了所有测试),那么您必须再次创建一个新版本 这意味着您可以从新的发布分支重新开始,或者遵循修补程序工作流模型。

可以看出,在 GitFlow 中,一旦你合并到master ,你可能已经做了很多测试,因此从master创建的版本在测试中失败的风险很小。

请注意,GitFlow 当然不会阻止您从除master之外的所有其他分支创建工件并将它们部署到任何环境(生产环境除外)以进行测试。

release后, release分支将被删除,但master将保持稳定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM