我的工作正在从SVN切换到Git,我们正在重新评估我们如何使用分支和标签。
我们已经看到使用master
作为始终稳定版本的模型,其中标记用于标识版本,而单独的开发分支用于不稳定的代码(http://nvie.com/posts/a-成功-混帐分支模型/).
我们喜欢这种开发方法,但它似乎不允许将修补程序应用于已发布的版本。
我们的产品安装了多个客户端服务器,每个服务器可能安装了不同的版本(由于我们无法控制的各种原因)。今天我们使用分支管理我们的版本,master
用于开发。
例如,我们可能在不同版本上有3个客户端:
如果在v1.2中发现了一个严重错误,我们会在v1.2,v1.3和主分支中修复它并更新客户端B和C.我们不会为这些更改创建新分支,但从技术上讲它们将是版本v1.2.1和v1.3.1。
当我们需要能够在v1.3已经出门时创建v1.2.1时,我们无法看到如何切换到仅使用标签版本。
任何人都可以推荐一个比我们更适合我们的模型,而不是每个版本创建一个分支并在master
中进行开发吗?
答案 0 :(得分:1)
您可以根据旧标记创建新分支。如果你在v1.2中找到了一个关键的错误,那么只需从v1.2标签创建一个新的分支,修复那里的bug,将其标记为1.2.1然后将修复程序挑选到所有其他标签中(现在是分支机构),你正在维护。
即使您没有在master
中执行稳定版本,这仍然适用。
答案 1 :(得分:0)
你可以使用一个稳定的主人,并且仍然可以进行每次发布分支(实际上我建议你这样做)。
如果您需要为较早版本的主要版本修补次要版本, 希望为每个主要版本分配一个分支,您不应该试图避免这种情况。< / p>
然而,这并不能阻止你将master声明为一个稳定的分支并让人们使用单独的分支进行开发,只有在确定它们稳定时才将这些分支合并为master。
保持掌握稳定有很多好处:
您还可以使用标记来标记给定主要版本的初始分支点(以及任何次要版本也会从主要分支发布)。
答案 2 :(得分:0)
我们喜欢这种开发方法,但它似乎不允许将修补程序应用于已发布的版本。
您是否看到名为hotfixes
的分支?当需要修补程序时,它会从master
分支,其更改将返回master
,以及develop
?
今天我们使用分支管理我们的版本,而master用于开发。
nvie.com分支模型不使用master
进行开发,而是使用develop
。 master
应该始终是该产品的最新发布版本。
如果在v1.2中发现了一个严重错误,我们会在v1.2,v1.3和主分支中修复它并更新客户端B和C.我们不会为这些更改创建新分支,但从技术上讲它们将是版本v1.2.1和v1.3.1。
找出master
上发生错误的最早版本;从该标记创建hotfix
分支,然后将修补程序反向移植到develop
。实际上,您应该在hotfix
中发生错误的每个版本化标记创建一个master
分支,并将其反向移植到那些,然后最终返回到master
的头部。