git-flow 更改默认工作流程
git-flow change default workflow
有谁知道是否可以将 git 流程更改为使用 3 个以上的分支?
目前我们使用标准工作流程:
dev -> feature/* -> dev
dev -> release/* -> master
master -> hotfix/* -> master & dev
然而,我们的设置现在已经大幅扩展,正在寻找以下工作流程
dev -> feature/* -> dev
dev -> stage/* -> staging
staging -> bug/* -> staging
staging -> release/* -> master & dev
master -> hotfix/* -> master & staging & dev
改变后的工作流程将使开发人员能够继续构建和共享新功能,即使在分阶段发布的测试期间也是如此。还使其他开发人员能够修复即将发布的版本中的任何问题。
可能吗?是的,您可以使用任何您想要的过程。 Git Flow 是 (1) 一组关于如何在 Git 中使用分支的指南,以及 (2) 一组自动执行这些指南的脚本。在这个答案中,我将重点关注 (1),但扩展脚本以帮助您实施所选解决方案应该很简单。
标准工作流程中缺少一件事:
dev -> feature/* -> dev
dev -> release/* -> master (& dev)
master -> hotfix/* -> master & dev
即,release
个分支需要合并回 dev
(如果它们有任何提交)。
您的新设置需要类似的修复:
dev -> feature/* -> dev
dev -> stage/* -> staging (& dev)
staging -> bug/* -> staging (& dev)
staging -> release/* -> master (& staging) & dev
master -> hotfix/* -> master & staging & dev
如您所见,必须完成的合并数量呈指数级增长。
我有两个替代建议,一个是对标准工作流程的轻微调整,另一个是我目前正在为一个项目使用的更简单的扩展工作流程。
标准Git流
同样,作为参考,标准 Git Flow 工作流程是:
dev -> feature/* -> dev
dev -> release/* -> master (& dev)
master -> hotfix/* -> master & dev
与其使用长期存在的专用 staging
分支部署到您的暂存环境,不如将您的 CI/CD 系统设置为自动部署到暂存最新的 release
分支.
我推荐此选项,因为它使事情变得最简单,但可能很难设置您的 CI 系统以部署最新的 release
分支。
FF-仅生产
以下是此设置的概述:
dev -> feature/* -> dev
dev -> release/* -> staging (& dev)
staging -> hotfix/* -> staging & dev
staging -> --ff-only -> master
此设置对于需要非常稳定的生产部署很有用。请注意 nothing 曾经合并到 master
;甚至 hotfix
es 也被合并到 staging
中。当 release
或 hotfix
已在暂存测试中,执行此操作以更新生产:
git checkout master
git merge --ff-only staging
git push origin master
此工作流程与您建议的工作流程非常接近,但仍然大大减少了合并次数,并且还具有只需对标准 git-flow 脚本进行极少更改的好处。
有谁知道是否可以将 git 流程更改为使用 3 个以上的分支?
目前我们使用标准工作流程:
dev -> feature/* -> dev
dev -> release/* -> master
master -> hotfix/* -> master & dev
然而,我们的设置现在已经大幅扩展,正在寻找以下工作流程
dev -> feature/* -> dev
dev -> stage/* -> staging
staging -> bug/* -> staging
staging -> release/* -> master & dev
master -> hotfix/* -> master & staging & dev
改变后的工作流程将使开发人员能够继续构建和共享新功能,即使在分阶段发布的测试期间也是如此。还使其他开发人员能够修复即将发布的版本中的任何问题。
可能吗?是的,您可以使用任何您想要的过程。 Git Flow 是 (1) 一组关于如何在 Git 中使用分支的指南,以及 (2) 一组自动执行这些指南的脚本。在这个答案中,我将重点关注 (1),但扩展脚本以帮助您实施所选解决方案应该很简单。
标准工作流程中缺少一件事:
dev -> feature/* -> dev
dev -> release/* -> master (& dev)
master -> hotfix/* -> master & dev
即,release
个分支需要合并回 dev
(如果它们有任何提交)。
您的新设置需要类似的修复:
dev -> feature/* -> dev
dev -> stage/* -> staging (& dev)
staging -> bug/* -> staging (& dev)
staging -> release/* -> master (& staging) & dev
master -> hotfix/* -> master & staging & dev
如您所见,必须完成的合并数量呈指数级增长。
我有两个替代建议,一个是对标准工作流程的轻微调整,另一个是我目前正在为一个项目使用的更简单的扩展工作流程。
标准Git流
同样,作为参考,标准 Git Flow 工作流程是:
dev -> feature/* -> dev
dev -> release/* -> master (& dev)
master -> hotfix/* -> master & dev
与其使用长期存在的专用 staging
分支部署到您的暂存环境,不如将您的 CI/CD 系统设置为自动部署到暂存最新的 release
分支.
我推荐此选项,因为它使事情变得最简单,但可能很难设置您的 CI 系统以部署最新的 release
分支。
FF-仅生产
以下是此设置的概述:
dev -> feature/* -> dev
dev -> release/* -> staging (& dev)
staging -> hotfix/* -> staging & dev
staging -> --ff-only -> master
此设置对于需要非常稳定的生产部署很有用。请注意 nothing 曾经合并到 master
;甚至 hotfix
es 也被合并到 staging
中。当 release
或 hotfix
已在暂存测试中,执行此操作以更新生产:
git checkout master
git merge --ff-only staging
git push origin master
此工作流程与您建议的工作流程非常接近,但仍然大大减少了合并次数,并且还具有只需对标准 git-flow 脚本进行极少更改的好处。