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;甚至 hotfixes 也被合并到 staging 中。当 releasehotfix 已在暂存测试中,执行此操作以更新生产:

git checkout master
git merge --ff-only staging
git push origin master

此工作流程与您建议的工作流程非常接近,但仍然大大减少了合并次数,并且还具有只需对标准 git-flow 脚本进行极少更改的好处。