【发布时间】:2016-06-19 14:21:52
【问题描述】:
我的存储库有两个分支:common 和 alt。 common 分支包含对大多数人来说是最常见用例的代码版本。 alt 分支包含项目的一个版本,其中一些配置不同,但大多数配置与common 相同。
到目前为止,我一直很高兴地在我的机器上进行开发,将错误修复和开发应用到 common 分支,然后将这些更改重新定位到 alt。 alt 有一些我不会退回到 common 的提交。这些更改与common 上的更改完全垂直,因为alt 只是添加和删除了一些文件。
举个例子,在我更改了common 中的一些内容但还没有将它们重新定位到alt 之后,代码可能看起来如何。
A -- B -- C -- F (common)
\
`-- D -- E (alt)
在变基之后:
A -- B -- C -- F (common)
\
`-- C --- F -- D -- E (alt)
但是,我最近在 github 上发布了该项目,并在那里发布了两个分支。看来我不能再使用 rebase 来使 alt 与 common 保持同步,因为我每次都这样做:
- 在
common中编辑内容并提交 - 结帐
alt和git rebase common git push github alt
这表示alt 的本地分支落后于远程分支,现在我总是需要先拉取并合并。这会产生很多杂乱无章的合并提交,我认为这些提交是不必要的(它们的差异是空的)。
如何更好地管理我的分支,以便将common 中的更改拉入alt,以便我也可以将common 和alt 保留在github 上?
【问题讨论】:
-
维护多个长期存在的分支很痛苦(正如您所发现的那样)。您应该非常喜欢单个分支,并使用配置选项来区分这两个变体。
-
这种技术叫做feature toggles
-
是的,但由于它是一个样板项目,我认为这并不适用。拆分 repo 也是不行的,因为共享了很多代码。