合并修补程序和相互更新功能时 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
中删除一个版本时,版本会发生变化。该版本是 major
、minor
或 patch
。如何管理这些发布分支取决于您。将其他分支合并到 release
或 develop
分支时,不应发生 version
碰撞,因为功能可能会在 release/1.3.0
中结束,而修补程序可能会在 [=20= 中结束] 或者 develop
,合并到 `master.
后拉回 release/1.3.0
下面的两种方法应该可以帮助您针对 develop
、master
和 release
分支分离功能和修补程序。
第一种方法
最终出现在您的 release/*
或 master
分支中的修补程序应该被拉回到您的 develop
分支中,因此,进一步的 release/*
分支最终将拉回这些修补程序。在发布方面,理想情况下,当您采用发布分支时,这就是您发布的地方。
这允许以下内容:
修补程序分支 release
或 master
分支可以补丁发布,并拉回 develop
功能可以分支 develop
分支可以是次要版本,其中将包含来自 master
分支的修补程序。
第二种方法
您从 develop
创建了一个发布分支,其中的功能被合并到其中。修补程序基于您的 develop
分支。
这允许以下内容:
更小,补丁仅来自 develop
的版本可以发布并合并到 master
,然后拉入包含功能的其他 release
分支。
包含更大的 release
分支,可以很容易地指定特性或 "backed out" 一个版本,而不会污染 develop
分支。
我已经开始与我的团队一起使用 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
中删除一个版本时,版本会发生变化。该版本是 major
、minor
或 patch
。如何管理这些发布分支取决于您。将其他分支合并到 release
或 develop
分支时,不应发生 version
碰撞,因为功能可能会在 release/1.3.0
中结束,而修补程序可能会在 [=20= 中结束] 或者 develop
,合并到 `master.
release/1.3.0
下面的两种方法应该可以帮助您针对 develop
、master
和 release
分支分离功能和修补程序。
第一种方法
最终出现在您的 release/*
或 master
分支中的修补程序应该被拉回到您的 develop
分支中,因此,进一步的 release/*
分支最终将拉回这些修补程序。在发布方面,理想情况下,当您采用发布分支时,这就是您发布的地方。
这允许以下内容:
修补程序分支
release
或master
分支可以补丁发布,并拉回develop
功能可以分支
develop
分支可以是次要版本,其中将包含来自master
分支的修补程序。
第二种方法
您从 develop
创建了一个发布分支,其中的功能被合并到其中。修补程序基于您的 develop
分支。
这允许以下内容:
更小,补丁仅来自
develop
的版本可以发布并合并到master
,然后拉入包含功能的其他release
分支。包含更大的
release
分支,可以很容易地指定特性或 "backed out" 一个版本,而不会污染develop
分支。