git 有两个主分支的流,可能吗?
git flow with two master branches, is it possible?
我在一个有奇怪分支方案的项目中工作。假设这是一个包含几个网站的共享项目存储库(下面只是一个示例):
从上面的站点来看,web1、web2、web3 具有相同的功能,web4 与其他站点具有相同的功能,但有一些变化。之前的团队结束了为 web1、web2、web3 构建了一个 master 分支,为 web4 构建了一个 web4_master。以下是分支的示例:
λ git branch
* web4_master
master
develop
我想在这里使用 git-flow
,就像我对其他具有正常分支方案(意味着只有一个主分支)的项目所做的那样,但在这种情况下,我必须主主分支,有时代码会出现掌握或 web4_master 或两者兼而有之。有什么方法可以使用 git-flow
来处理这个问题吗?或者我是否必须依赖于旧方法,这意味着将更改手动合并到任何地方?
由于 web4
包括其他站点的所有更改,我将按如下方式构建存储库:
- 一个
master
分支正常
- 从
master
正常 develop
分支
web4_master
是 master
的分支
web4_develop
是 web4_master
的分支
如果一个功能适用于所有站点,那么工作将在 develop
的功能分支中完成,例如 "normal" git-flow
。最终,这将准备好发布并合并到 master
.
如果一个功能只针对 web4
,那么工作在 web4_develop
的功能分支中完成,并最终合并到 web4_master
。
基本上,有两种 git-flow
发生 - 一种用于所有站点,另一种用于 web4
特定事物。
最后一块:
在所有站点的发布过程中(或任何对您最有意义的时候),web4
需要获取最新发布的更改。
- 将
web4_master
重新设置为 master
。这里可能会出现冲突,按需解决
- 将
web4_develop
重新设置为 web4_master. This will NOT be a standard rebase and will need to make use of the
--onto` 标志以避免重复提交。详见this
- 对任何
web4
in-progress 功能分支重复步骤 2 到 web4_develop
。
本质上,这是将 web4
树视为来自 master
的长 运行 特征分支。
如果 "all sites" 功能有重大变化,或者变化非常普遍,我不推荐这样做,因为冲突解决会变得很烦人。
在那种情况下,我会推荐您手动合并更改到两个根分支的解决方案。
也有可能这种方法有意义/使用合并策略更容易,但我不喜欢这样的方法。
我在一个有奇怪分支方案的项目中工作。假设这是一个包含几个网站的共享项目存储库(下面只是一个示例):
从上面的站点来看,web1、web2、web3 具有相同的功能,web4 与其他站点具有相同的功能,但有一些变化。之前的团队结束了为 web1、web2、web3 构建了一个 master 分支,为 web4 构建了一个 web4_master。以下是分支的示例:
λ git branch
* web4_master
master
develop
我想在这里使用 git-flow
,就像我对其他具有正常分支方案(意味着只有一个主分支)的项目所做的那样,但在这种情况下,我必须主主分支,有时代码会出现掌握或 web4_master 或两者兼而有之。有什么方法可以使用 git-flow
来处理这个问题吗?或者我是否必须依赖于旧方法,这意味着将更改手动合并到任何地方?
由于 web4
包括其他站点的所有更改,我将按如下方式构建存储库:
- 一个
master
分支正常 - 从
master
正常develop
分支 web4_master
是master
的分支
web4_develop
是web4_master
的分支
如果一个功能适用于所有站点,那么工作将在 develop
的功能分支中完成,例如 "normal" git-flow
。最终,这将准备好发布并合并到 master
.
如果一个功能只针对 web4
,那么工作在 web4_develop
的功能分支中完成,并最终合并到 web4_master
。
基本上,有两种 git-flow
发生 - 一种用于所有站点,另一种用于 web4
特定事物。
最后一块:
在所有站点的发布过程中(或任何对您最有意义的时候),web4
需要获取最新发布的更改。
- 将
web4_master
重新设置为master
。这里可能会出现冲突,按需解决 - 将
web4_develop
重新设置为web4_master. This will NOT be a standard rebase and will need to make use of the
--onto` 标志以避免重复提交。详见this - 对任何
web4
in-progress 功能分支重复步骤 2 到web4_develop
。
本质上,这是将 web4
树视为来自 master
的长 运行 特征分支。
如果 "all sites" 功能有重大变化,或者变化非常普遍,我不推荐这样做,因为冲突解决会变得很烦人。
在那种情况下,我会推荐您手动合并更改到两个根分支的解决方案。
也有可能这种方法有意义/使用合并策略更容易,但我不喜欢这样的方法。