为什么 git 标记一个斑点或一棵树(或一个标记)?

Why git tag a blob or a tree (or a tag)?

我了解如何 可以使用 git 标签来标记一个 blob、一棵树,甚至另一个带注释的标签。我了解使这成为可能的体系结构和概念设计。

但是,我很难想到这个(或 "real workflow" 个应用程序)在现实生活中的应用。

在 Stack Overflow 上搜索时,我只找到一个提到标记非提交对象的答案,advice not to do so

什么可能情况下曾经适合标记非提交对象?

Are there any use cases where it would be appropriate to tag a non-commit object?

如您所想。简而言之,您应该避免 non-commit 标记。

例如,假设您修复了代码(热修复)及其更大提交的一部分

为什么?
因为它是这样提交的,后来你才发现你只需要一个文件。
现在您想标记此更改的文件(内容)而不标记所有其他内容。

示例 2:
您正在检查代码,试图找出导致错误的文件,要标记单个提交,您可以使用标记或 git note,但要标记单个文件,您将使用 tag.

还有其他一些例子。


The Linux kernel repository also has a non-commit-pointing tag object – the first tag created points to the initial tree of the import of the source code

标记树或 blob 可能暂时适用于直接操作对象的长期 运行ning 实用程序。标记将确保 git gc 可以安全地 运行 并行。实用程序会在创建提交时删除标签。