关于版本控制:使用 git-flow 的多个开发分支

Multiple development branches with git-flow

我目前正在研究 git-flow,并试图弄清楚如何将它用于我参与的项目。

我看过各种 git-flow 教程,我对 git 相当熟悉。因此,我不需要任何关于 git 的提示,而是直接在 git-flow 的工作流程上。

情况如下:

当我发布一个版本(我们称之为 1.0)时,这个 get 是 develop 的分支,这很好。假设现在我开始研究 2.0,添加新功能。当然,一旦完成,我想将它们合并回开发中。现在在 1.0 上修复就可以了,所以假设我生产了几个版本 1.0.1、1.0.2 等。所有这些也会更新开发分支,这也很好。到目前为止,现在很麻烦,我可以独立开发 2.0 的功能和 1.0.x 的修补程序。

但是,假设有人请求 1.1 版本的新功能。现在我有一个问题。如果我创建一个功能分支,这将基于开发分支,它可能已经包含 2.0 的东西,我可能不希望在这个 1.1 版本中。

有没有一种简单的方法来独立处理这些 2.0 和 1.1 的变化?

我已经看到了几种可能性:

  • 在开发的最后一个发布位置创建一个新分支。将开发重新定位到此位置并重命名另一个开发分支。但是,此分支将不包含来自 1.0.1 等的任何修补程序。

  • 在 2.0 完成之前不要合并 2.0 的功能。但是,我将不得不保留许多未合并的更改,直到最后一刻。这也无济于事,如果发布了 2.0 get 并且随后请求更改为 1.0.x。

这对 git flow 有可能吗? IE。一旦新版本的工作已经开始或什至完成,是否基于早期版本发布?


更多关于"git-flow 改进"的信息:

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

关键是从上次发布的那一点开始功能。您是否有 1 个或多个已发布的受支持版本应该不是问题。

更新:

我已经重写了 - 以博客形式:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/


Is this possible at all with git flow?

使用 git-flow 作为一系列最佳实践而不是硬性规则,一切皆有可能。只需从您的 1.0 发布分支而不是从您的 develop 分支打开您的功能分支。


我相信如果您想同时支持两个版本的应用程序,最好为此创建两个不同的存储库。


我意识到这是一个老问题,但我只是找到了一种相当简单的方法来处理它。

在我的开发服务器上,我基本上有两个工作副本,一个用于 v1.0,另一个用于 v2.0。

然后我为 v2.0 创建一个单独的"开发"分支,当我在 2.0 环境中运行"git flow init"时,我将其用作我的"下一个版本"分支。

我相信你可以对 master 分支做同样的事情,但对我来说这已经足够了。