语义版本控制:我可以将 git 标签移动到不同的提交吗?

Semantic versioning: Am I allowed to move git tags to a different commit?

假设我用标记 v1.0.0.

标记了我的库的提交 A

现在,我在 API 文档中做了一个小修正,比方说,修正了一个拼写错误。我提交了此更改,因此新提交 B 现在紧跟在 A.

之后

我可以将 v1.0.0 标记移动到提交 B,因为我没有进行任何重大更改,而且我的库代码与提交 A 中的代码完全相同]?

或者,我是否需要在后续 补丁 中包含如此小的更改,例如改为 v1.0.1?

Point 3 in SemVer 2.0 非常明确:

Once a versioned package has been released, the contents of that version MUST NOT be modified. Any modifications MUST be released as a new version.

请注意,SemVer 不关心您的源代码管理工具,只关心 已发布的包 。如果发布的包发生了变化,那么它就是一个新版本。因此,如果您的文档作为已发布包的一部分发布,修复它就是对包的更改。

在实际操作中,一旦您共享了标签或带标签的版本,下载该版本的人可能会做出明确的假设,例如每次下载时其内容的 SHA 哈希将匹配它,或者您的 git 存储库的镜像将不必覆盖已经获取的标签。

通常,SemVer 将版本号视为“廉价”- 保持一致和可预测性比您可能对低版本号产生的任何情感依恋更重要,像“54.23.13”这样的版本号非常好。