当主人还没有准备好发布时如何部署错误修复?

How to deploy a bug fix when a master is not ready to be released?

考虑合并到 master 部署到 QA 并创建标签部署到 prod 的持续交付策略,我们如何修复 prod 中的错误但不发布 master 中的最后一次提交(如下所示的提交 Y)?

给出以下 git 日志

master
  - commit Y
  - commit X = tag 1

在“标签 1”上发现了一个错误,因此我们从该提交分支,修复它并合并回主服务器。

master
  - commit Z with the fix = tag 2
  - commit Y
  - commit X = tag 1

假设此 Merge 提交将位于顶部,如何确保 commit Y 在尝试发布修复时未被部署?

事实证明你已经直观地解决了你的问题,但是你的图表没有显示合并提交所以它在你的问题中并不明显。

如果您从 Tag-1 分支,创建一个带有修复的提交(提交 Z),并在该提交上创建 Tag-2,然后将其合并回 master 您的图表将是:

MC (master)
| \
Y  \
|   Z (Tag-2)
|  /
| /
X (Tag-1)
|
|

只要您部署 Tag-2 而不是 master,您就会实现您的目标。由于您的工作流程是从 master 上的标记提交发布到 Prod,如果您决定还想部署提交 Y,那么您可以将 Tag-2 放在合并提交 (MC) 上Z 个。或者,稍后在进一步测试后,您可以在 MC 上添加 Tag-3 以全部部署。

附带说明一下,当您在某个分支上创建提交 Z 时,您实际上为该分支命名并不重要,但从概念上讲,您可以将其视为 hotfix 分支.