【发布时间】:2021-08-07 08:01:13
【问题描述】:
在学习 GitFlow 时,我遇到了一些我在阅读过的任何文档/文章中都没有解决的问题。
在某些时候,develop 分支上的代码需要部署到 QA/staging 环境并经过严格测试。因此,使用 GitFlow,您可以从 develop 中切出一个 release 分支,然后将 release 部署到所述暂存环境。
首先,只是想快速澄清一些事情:一个特定的项目/repo 第一次经历这个过程时,你实际上会从develop 分叉/创建这个新的release 分支,是的?而在未来的所有其他时间里,你只是合并 develop 到 release,是?
然后 QA 测试了 staging env 上的 release 分支,一切看起来都很好,我们已经准备好部署到 prod。你:
- 部署到产品并然后将
release合并到master? ; 或 - 将
release合并到master并然后部署到产品?
我问是因为在前一种情况下,您似乎需要将 release 分支部署到 prod,然后部署到 prod,然后合并到 master。这听起来不错,但通常 prod 和非 prod 环境并不相同,并且在暂存时运行完美的代码会在它在 prod 服务器上启动的第二次阻塞。我知道 GitFlow 支持 hotfix 分支 的概念,但它们保留用于小修复。对于需要回滚/回退版本的复杂修复,我们现在将“脏代码”(由于某种原因破坏 prod 的代码)合并到 master。
在后一种情况下,从合并并提交产品发布请求到产品发布可能需要数小时甚至数天(尤其是如果您需要让 IT/Ops 参与产品部署)部署实际发生。在此期间,您有一个 master 分支,上面写着“功能 X、Y 和 Z 在生产中”,但实际上它们不是。
我想知道 GitFlow 是否真的以某种方式解决了这个问题,或者这两种情况的已知解决方法是什么。
【问题讨论】: