[英]GitFlow: what is difference between release and master branches?
区别在于目标和过程。 当您准备即将发布的版本时,通常会创建release
分支。 当您应该发布的所有feature
分支都已经合并到develop
分支时,您从develop
分支创建release
分支并仅提交错误修复或一些配置更改。 换句话说,您尝试使其尽可能稳定。 当希望release
分支足够稳定时,您可以将其合并回develop
和master
分支。 master
分支的目的是始终拥有可以部署到生产环境的项目的最新稳定版本。 您永远不会直接提交到 master 分支,只能从release
或hotfix
分支合并到它。 还可以配置 CI/CD 工具,以便在master
分支中的任何更新上部署到生产环境。
一旦你想要在你的版本中拥有的所有特性都在开发中,而不是“锁定”开发到任何新的提交,你创建一个 relase 分支,它将包含你下一个版本中预期的所有特性(而不是在 master 中,因为你的整个版本应该被测试并且可能会有一些错误修复......)。
您可以查看这些链接以获得进一步的解释:
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
分支之间的区别:
release/<something>
的分支上准备发布。master
中。 然后删除您的发布分支(它不再有目的)。master
,例如5.9.1
。master
上的标签创建可部署的工件。 您现在有一个版本(可能用于生产环境)。 您现在在所有环境中测试这些工件:测试、登台等。如果测试失败(尽管您在合并到master
之前已经完成了测试),那么您必须接受您现在有一个5.9.1
版本废纸篓。 和它一起生活! 然后,您必须从新的发布分支重新开始,例如release/5.9.2
。 可以看出,在 GitFlow 中,一旦你合并到master
,你可能已经做了很多测试,因此从master
创建的版本在测试中失败的风险很小。
请注意,GitFlow 当然不会阻止您从除master
之外的所有其他分支创建工件并将它们部署到任何环境(生产环境除外)以进行测试。
release
后, release
分支将被删除,但master
将保持稳定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.