在git-flow之后,您应该如何处理早期版本的修补程序?


101

如果您尝试遵循此处介绍的git-flow分支模型以及此处介绍的工具,则应如何处理这种情况:

您已经制作了1.0版和2.0版。然后,您需要对1.0进行修复。您从1.0标记创建了一个修补程序分支,并在那里实现了修补程序。但是那又怎样呢?

通常,您将合并到master并在其中放置1.1 release标签。但是您不能将1.1合并到master上的2.0之后的某个点。

我猜您可以将release标签放在hotfix分支上,但是那样会在包含发布标签的master旁边创建一个永久分支。那是正确的方法吗?


Git-flow和具有多个并行释放分支的master的可能重复项[尽管另一个问题较新,但它具有更有用的答案,所以我将这个问题标记为重复项]
danio 2014年

Answers:


74

似乎在git flow中有一个“支持”分支的概念。这用于将修补程序添加到早期版本。

该线程包含更多信息,包括以下示例:

git checkout 6.0
git checkout -b support/6.x
git checkout -b hotfix/6.0.1

...进行修复,然后:

git checkout support/6.x
git merge hotfix/6.0.1
git branch -d hotfix/6.0.1
git tag 6.0.1

或使用git flow命令

git flow support start 6.x 6.0
git flow hotfix start 6.0.1 support/6.x

...然后进行更改:

git flow hotfix finish 6.0.1

保留这些支持分支或在一段时间后将其删除
Evan Hu

@EvanHu好,只要您在生产中的某个地方有分支,就可以肯定地保留它们。之后,这是历史记录。您可能想知道如果应该再次修复此修复程序。
克拉斯·梅尔伯恩

一个人应该发布该修补程序吧?我们该怎么做?
Ravindranath Akila

33

有趣的问题!您链接的流程假设主流程可以跟踪生产。仅在生产版本严格增加的情况下才有效。对于只有一个生产版本的网站通常是正确的。

如果必须维护多个生产版本,那么仅一个分支来跟踪生产是不够的。解决方案是不使用master来跟踪生产。相反,用树枝一样release1release2等等。

用这种方法,您甚至可能不需要修补程序分支。您可以在release1分支上解决该问题。修复足够好后,release1.1release1分支上创建一个标签。


您可以将git-flow更改为在发行分支上设置发行标签。这是一个相当重大的变化。它将破坏当前的脚本。另外,主人会包含什么?
克拉斯·梅尔本

3
git-flow如果必须支持多个生产版本,则该工具不适合。在此答案提出的工作流程中,根本没有使用master。毕竟,您可以命名开发分支主管。
2013年

GitFlow支持跟踪多个加工生产时版本:gitversion.readthedocs.io/en/latest/git-branching-strategies/...
安德烈大号

7

git-flow假设您一次只支持一个发布行,而master可以方便地跟踪它。如果维护的数量超过1,则需要修改git-flow流程,以使您支持的单独发行版具有多个跟踪器(master-1,master-2)。除了或代替最新发布线的特定跟踪器(使用master代替master-2),您可以继续使用master跟踪最新发布线。

不幸的是,您可能正在使用的任何git-flow工具都可能需要进行修改,但是希望您对git-flow流程足够熟悉,可以直接使用git命令处理这种情况。


如果您修改git flow流程,则将有所不同。如果某个模型应该是固定的(不只是扩展的),那么它就如作者所说的一样成功。请查看我对我们正在讨论的主题的回答。
维克多·亚雷玛

0

git config --add gitflow.multi-hotfix true此命令似乎对我有用!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.