具有多个主分支的 Gitflow

标签 git version-control git-flow

虽然这类似于线程 Git-flow and master with multiple parallel release-branchesWhat's best way to work with git on multiple master branch? ,它并不完全相同......我确实发现这个很相似:Multiple projects with same GIT master ,但我想讨论我的具体用例...

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

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

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

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

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

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

最佳答案

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

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

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

关于具有多个主分支的 Gitflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32318449/

相关文章:

git - 使用 Git Flow,成功的分支模型

git - 适用于 Windows 的 Vim - 我应该输入什么来保存和退出文件?

git - 如何对一系列提交进行 git rebase -i?

GitHub:设置 SSH

git - 在 git-flow 中,为什么 master 甚至存在?

git - 源树 : How to create multiple hotfix branches with Git Flow

git - 在 git 中追加某些文件的更改

python - 版本控制历史是如何存储和计算的?

eclipse - 使用 Eclipse 时,我应该将工作区添加到源代码管理中吗?

git - 标记提交消息和变更集