2013-05-05 59 views
65

如果您尝试按照混帐流分支模型,documented heretools here,你应该如何处理这种情况:以下git-flow应该如何处理早期版本的修补程序?

你做出了一个1.0版本和2.0版本。然后你需要为1.0做一个修补程序。您可以从1.0标签创建一个修补程序分支并在那里实施修复。但是呢?

通常情况下,您将合并为主并在其中放置1.1版本标签。但是您无法将1.1合并到master上2.0之后的某个点上。

我想你可以把发布标签放在修补程序分支上,但是这会在主发行版旁边创建一个包含发布标签的永久分支。这是正确的方式吗?

+0

[Git-flow和master与多个并行版本 - 分支机构]的可能重复(http://stackoverflow.com/questions/16562339/git-flow-and-master-with-multiple-parallel-release-branches )[虽然另一个问题更新,它有更多有用的答案,所以我已经标记为重复的这个问题] – danio 2014-06-23 09:15:54

回答

47

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

This thread has more information,这些例子:

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 
+0

?保留这些支持分支或在某段时间后删除它们 – 2017-03-01 09:08:32

+0

@EvanHu很好,当然,只要你在某个地方有这个分支。之后,这是一个历史记录的问题。您可能想知道如果修补程序应该再次发生,修补程序如何修复。 – 2017-03-01 13:26:30

+0

应该在热修复上做一个发布,对不对?我们怎么做到这一点? – 2017-06-14 07:30:01

25

有趣的问题!您链接的流程假定主人可以跟踪生产。这只适用于生产版本严格增加的情况。对于只有一个生产版本的网站来说,情况通常如此。

如果您必须维护多个生产版本,则只有一个分支来跟踪生产是不够的。解决方案不是使用master来跟踪生产。相反,请使用release1,release2等分支。

在此方法中,您甚至可能不需要修补程序分支。您可以修复release1分支上的问题。如果修复足够好,请在release1分支上创建一个release1.1标记。

+0

你可以改变git-flow在释放分支上设置释放标签。这是一个相当大的变化。它会打破当前的脚本。另外,主人会包含什么? – 2013-05-05 16:21:03

+3

如果您必须支持多个生产版本,'git-flow'工具不适用。在这个答案中提出的工作流程中,根本不使用主人。毕竟,你可以命名开发分支的主人,这只是一个名字。 – Andomar 2013-05-05 16:25:26

+0

GitFlow支持跟踪多个产品版本:https://gitversion.readthedocs.io/en/latest/git-branching-strategies/gitflow-examples/#support-branches – 2016-10-06 11:21:08

6

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

不幸的是,您可能正在使用的任何git-flow工具可能都需要修改,但希望您熟悉git-flow过程以直接使用git命令来处理此特定情况。

+0

如果您修改'git flow'过程,它会有些不同。如果某些模型应该被修正(不仅仅是扩展),那么它就像它的作者所说的那样成功。请查看我对我们正在讨论的主题的回答。 – 2016-08-02 13:09:17

相关问题