合并修补程序和相互更新功能时 GitFlow 中的正确程序是什么

What is the correct procedure in GitFlow when merging hotfixes and updating features from one another

我已经开始与我的团队一起使用 GitFlow,它确实解决了很多问题,但我有两个问题,关于在这些情况下正确的程序是什么

a) 开发分支使用与主分支不同的版本号,主分支像'1.24f.001''1.25f.001'等。开发分支像'1.25','1.26'等.

当我创建一个新版本时,我使用开发分支,更改版本(它保存在保存在 Git 中的项目配置文件中)并合并到 master,并创建一个标签

但是如果我为 master 做一个修补程序,它的版本将变为 1.24f.002 ,当我将它合并回开发时它会尝试合并版本号,我们不想要,除了不完全合并特定文件还有另一种处理方法吗?

b) 假设我已经启动了一个新功能 (A),而另一个开发人员在我检查了我的功能后添加了一个新功能 (B),但我需要 (B) 中的一些修复才能工作。正确的程序是什么?手动实施修复,当我将功能合并回开发时,我通过保留更改来解决冲突?或将开发合并到 (A) 并从那里继续?

对此有多种方法,我在下面进行了详细说明。

我目前使用发布和修补程序的方式是针对发布分支进行修复,将发布分支合并到 master,然后将这些修补程序拉回 develop

简而言之,当从 develop 中删除一个版本时,版本会发生变化。该版本是 majorminorpatch。如何管理这些发布分支取决于您。将其他分支合并到 releasedevelop 分支时,不应发生 version 碰撞,因为功能可能会在 release/1.3.0 中结束,而修补程序可能会在 [=20= 中结束] 或者 develop,合并到 `master.

后拉回 release/1.3.0

下面的两种方法应该可以帮助您针对 developmasterrelease 分支分离功能和修补程序。

第一种方法

最终出现在您的 release/*master 分支中的修补程序应该被拉回到您的 develop 分支中,因此,进一步的 release/* 分支最终将拉回这些修补程序。在发布方面,理想情况下,当您采用发布分支时,这就是您发布的地方。

这允许以下内容:

  • 修补程序分支 releasemaster 分支可以补丁发布,并拉回 develop

  • 功能可以分支 develop 分支可以是次要版本,其中将包含来自 master 分支的修补程序。

第二种方法

您从 develop 创建了一个发布分支,其中的功能被合并到其中。修补程序基于您的 develop 分支。

这允许以下内容:

  • 更小,补丁仅来自 develop 的版本可以发布并合并到 master,然后拉入包含功能的其他 release 分支。

  • 包含更大的 release 分支,可以很容易地指定特性或 "backed out" 一个版本,而不会污染 develop 分支。