首页 > 解决方案 > git flow 有两个主分支,有可能吗?

问题描述

我正在一个具有奇怪分支方案的项目中工作。假设这是一个包含几个网站的共享项目存储库(下面只是一个示例):

从上面的网站 web1、web2、web3 共享相同的功能,web4 与其他共享相同,并进行了一些更改。之前的团队结束了为 web1、web2、web3 和 web4 构建 web4_master 的 master 分支。这是分支的外观示例:

λ git branch
* web4_master
  master
  develop

我想在git-flow这里使用正常分支方案(意味着只有一个主分支)的其余项目,但在这种情况下,我必须主分支,有时代码会转到 master 或 web4_master 或两者兼而有之。有没有办法通过使用来处理这个问题git-flow?还是我必须与旧方式绑定,这意味着手动将更改合并到它们去的任何地方?

标签: gitbranchgit-flowbranching-strategy

解决方案


由于web4包括其他站点的所有更改,我将按如下方式构建 repo:

  • 一个master分支正常
  • 正常的一个develop分支master
  • web4_master是一个分支master
  • web4_develop是一个分支web4_master

如果某个功能适用于所有站点,则工作是在develop类似 "normal"的功能分支中完成的git-flow。最终,这将准备好发布并合并到master.

如果一个特性只是为了web4,那么工作是在一个特性分支中完成的web4_develop,并最终合并到web4_master.

本质上,发生了两种git-flow情况——一种针对所有站点,一种针对web4特定事物。

最后一块:

在所有站点的发布过程中(或对您最有意义的时候),web4需要获取最新发布的更改。

  1. 重新定位web4_mastermaster. 这里可能会有冲突,所以根据需要解决它们
  2. web4_develop重新定位到--onto`web4_master. This will NOT be a standard rebase and will need to make use of the标志以避免重复提交。有关详细说明,请参阅
  3. web4对任何正在进行的功能分支重复步骤 2到web4_develop

本质上,这将web4树视为来自master.


如果“所有站点”功能发生重大变化,或者变化非常广泛,我不建议这样做,因为解决冲突会很烦人。

在那种情况下,我会推荐您手动将更改合并到两个根分支的解决方案。


这种方法也有可能是有意义的/使用合并策略更容易,但这不是我对这样的事情的偏好。


推荐阅读