学习GitFlow时,我有一些担忧,在我阅读的所有文档/文章中都没有提到。
在某个时间点,需要将develop
分支上的代码部署到QA/staging环境并进行严格测试。因此,使用GitFlow你从develop
分支切出一个release
分支,然后将release
部署到所述staging环境。
首先,只想快速澄清一些事情:第一次特定项目/repo经历这个过程时,实际上您将从develop
中分叉/创建此新release
分支,是吗?以后所有其他时间,你只需将develop
合并到release
中,是吗?
然后QA在staging env上测试release
分支,一切正常,我们准备好部署到prod了。你会:
- 部署到prod,然后合并
release
到master
吗? ; 还是 - 将
release
合并到master
,然后部署到prod?
我问这个问题是因为在前一种情况下,似乎你需要将release
分支部署到prod,然后再次部署到prod,然后合并到master
。这听起来还好,但通常prod和非prod环境不相同,完美运行的代码在staging上运行时立即崩溃了。我知道GitFlow支持hotfix branches的概念,但它们仅限于小修复。在需要回滚/撤消发布的复杂修复情况下,我们现在将“脏代码”(某些原因导致prod破坏的代码)合并到master
中。
在后一种情况下,如果你需要涉及IT/Ops进行产品发布,则从合并并提交生产环境发布请求到实际进行生产部署可能需要数小时甚至数天。在此期间,你有一个master
分支,它说“功能X、Y和Z已经上线”,但事实上它们并没有。
我想知道GitFlow是否可以解决这个问题,或者已知的解决方案是什么。