具有多个主分支的 Gitflow

Gitflow with multiple master branches

虽然这类似于线程 Git-flow and master with multiple parallel release-branches and to What's best way to work with git on multiple master branch?, it is not quite identical... I did find this one is rather similiar: Multiple projects with same GIT master,但我想讨论我的具体用例...

我工作的公司正在为我们的 Git 工作流程制定政策和程序。我们想使用文章 http://nvie.com/posts/a-successful-git-branching-model/ 中描述的 "Gitflow" 模型或 https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow 并且在许多关于此事的讨论中经常被引用。

但是,我们有一个用例,其要求我找不到记录的解决方案。如果您的项目用于生产不止一种最终产品怎么办?因此 master 分支不能将 "release points" 表示为一个单一的产品。似乎主人可能需要备用分支?那么多个并行发布分支?

例如,如果项目充当 backbone 或引擎,可以具有不同的外观、风味或变体,但您希望将每个完整的最终产品存储在一个存储库中怎么办?

在我的特定情况下,我有一个在 Linux 服务器上运行的程序,但它也作为本地 Windows 应用程序分发。在这些不同的版本中,项目的大部分内容可能会或可能不会包含在一个或其他版本中。例如,服务器上有一些库,如果 repo 仅用于服务器,则不需要包含这些库,但必须包含在本地分发中,否则它们将不存在。我想在特定的发布点将 repo 的更新拉到服务器上,但忽略不属于那里的部分。

我会从 master 分支创建一个 "Server Release" 和 "Local Release" 分支吗?

开发分支(及其功能)会从哪里脱落?我不想要多个开发分支,每个分支都来自它自己的版本,因为代码开发实际上 99% 适用于这两个分支。我是否需要将单个开发分支合并到一个版本中,然后再合并到另一个版本中?

如果两个产品共享 99% 的代码,您可以轻松地共享同一个存储库。您可以有一个 release/develop/master 分支,只要这两个产品处于同一发布周期即可,例如,2.0 版同时发布。

From the master branch, would I create a "Server Release" and "Local Release" branch?

在 gitflow 中,你实际上是从 develop 分支发布的!但是如果它们处于不同的发布周期,没有什么可以阻止您为每个产品创建一个发布分支。然后你可以自由地将发布分支合并到 develop 和 master 分支,当它们在他们自己的时间完成时。这里唯一的问题是您可能需要在 master 分支上有两种不同风格的标签,以便您可以看到每个产品在其发布周期中的位置。或者为了使标签保持相同的格式,您可能有两个主分支(每个产品一个),当相应产品的功能完成时,您分别合并到它们中。