Gitflow:将发布错误修复合并回 master 开发

Gitflow: Merging release bugfixes back to develop from master

我的问题是关于 gitflow 过程中一个非常具体的点(如记录 here)。

我已经将 release/1.2 中的错误修正合并到 master 中,并进行了适当的标记。

除了历史看起来如何,从 release/1.2 反向合并与从 master 反向合并到 develop 之间有什么区别。

两种方法我都试过了,在我这个简单、人为的例子中,我发现develop没有什么不同,正如我所料。

这样做有危险吗?以后会不会遇到乱七八糟的问题?我错过了一些明显的东西吗?我怀疑答案可能与 master 中的其他功能有关,但目前应该不在 develop 中。

合并发布以开发:

合并master进行开发:

如果您将 master 合并回开发分支,您将在开发分支中拥有所有 merge branch release/x.y into master 合并提交,而在合并 release/x.y 分支本身时,您只会得到真正的改变。

当然,这或多或少是一个表面问题。但合并方向通常只是从 developmaster,而不是相反。

除了所说的合并提交使您的 develop 分支混乱之外,没有真正的危险。如果你坚持流程,就不应该有 master 中不在 develop 中的功能,因为热修复和发布分支应该始终合并到你的 develop 以及在 master.

I suspect the answer may be to do with other features that have gone into master, but which should remain out of develop for the moment.

来自 master 的提交无论如何都会进入 develop 并与下一个修补程序合并。如果有真正的代码更改,可能会出现意外结果并扭曲主机修复内容。

将稳定分支(git流程中的master)合并到开发分支(git流程中的develop)是各种git工作流程中的已知方式. Bbitbucket Server(Atlassian 出售的商业解决方案)具有 Automatic branch merging 的功能。 Git 项目本身总是将分支 maint 合并到 master 中,因为有一些错误修复。

所以我真的不明白为什么 gitflow 的作者选择了另一种方式。可能是没有真正的道理,只是一个偶然的决定。

Are there dangers to this? Am I going to encounter messy issues later on? Am I missing something obvious?

没有危险;没有问题;而且您不会遗漏任何东西。将 master 合并回 develop 是(恕我直言)稍微 更好的方法,并且没有缺点。无论您选择哪种方式,您最终都会在 develop 中得到相同的合并提交总数。不同之处仅在于这些合并提交结束的时间。如果您先将 release 合并回来,您将不会获得所有 releasemaster 的合并提交,直到稍后,当您进行修补程序时,所有这些都一次性完成。如果您执行 master 回到 develop,您会立即看到最近的合并提交。但是将 master 合并回 develop 有一个更大的优势:

始终确保 master 中的所有更改也在 developrelease 中(如果存在)。 (它们唯一应该不同步的时间是在 releasehotfix 分支完成期间。)也许确认 master 同步的最简单方法是确保master 中的 tip(最高提交)总是在 develop 中,或者 release 中存在。您可以很容易地以某个固定频率将其编写为 运行 的脚本,并在不正确时通知您。如果您不能期望 master 的提示提交永远在 release.

中,那么该脚本会更加复杂