为什么 Git Flow 建议将功能分支合并到开发分支而不是发布分支

问题描述

我们想切换到 Git Flow,但我有一些顾虑,因为有两个不同的团队使用同一个存储库。 团队 A 想使用 dev 分支进行提交,而团队 B 创建功能分支并在那里工作。团队 A 应该几乎每周的每一天都进行实时部署,另一方面,团队 B 准备每周发布包进行部署。

在这种情况下,我们可能很难将功能分支合并到 dev 和 release 分支。这就是为什么我想直接将功能分支合并到发布分支。此外,我们可能希望根据需要将发布分支停放一段时间。但是 git flow 不建议将功能分支合并到发布分支。根据流程,我们应该将我们的功能分支合并到 dev 分支,然后我们可以从 dev 创建/更新发布分支。

长话短说,我需要在部署之前相互更新 dev 和 release 分支,或者类似的事情。好像没有意义。

那么,在 git flow 上管理这种情况的最佳方法是什么。

解决方法

答案很简单:

  • 团队 A 不想使用功能分支 → 他们想要使用不同于 Git Flow 的分支和合并模型。
  • 团队 B 想要将功能分支直接合并到发布分支,因为团队 A → 他们想要使用不同于 Git Flow 的分支和合并模型。

结论:不要使用 Git Flow,只使用 Git。

我这么说是假设每个人都接受过使用普通 Git 而不仅仅是像 Git Flow 这样的抽象层的培训。实际上,Git Flow 不是一个产品,而是一个分支和合并模型,就像我之前所说的。具有相同名称的 Git 附加组件或 Git Flow 模型的多个 IDE 集成只是语法糖。想偏离就别用。


技术上有些无关,只是作为一个经验丰富的(约 15 年)敏捷教练大声思考:它说明了团队文化和两个团队为同一产品做出贡献并致力于他们找不到的同一存储库的协作关于 SCM 和发布周期的通用策略。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...