2

当我执行命令时,我们使用标签来部署版本:

git ls-remote -t origin

我可以看到这样的图片

d5a0a2513d71dd94522039d9844daf8b8eed531f    refs/tags/live-0.0.1
43a6228d4bf5839aa934b541c35d19b897b35056    refs/tags/live-0.0.1^{}
a8662ef8bf021ea349dbf56970fd9f62f97093fb    refs/tags/live-0.0.2
b48d63ff5af0c9f488f99c2066824c8891ae394e    refs/tags/live-0.0.3

我在本地代表上找不到此修订版d5a0a2513d71dd94522039d9844daf8b8eed531f。请解释一下,我们什么时候必须使用解引用?也许有人知道为什么它是在我的情况下完成的?(也许它是由我完成的,但我不记得了,也许正在测试某些东西)以及为什么我在本地代表处看不到这个提交d5a0a2513d71dd94522039d9844daf8b8eed531f

4

1 回答 1

2

在 git 中,SHA-1 哈希用于识别所有对象,而不仅仅是提交。对象类型包括:

  • 树木
  • 斑点
  • 提交(修订)
  • 标签

并非所有标签都有自己的 SHA-ID。有两种类型的标签:

  • 轻量级(没有消息,它们更像是一个无法移动的分支)
  • 带注释的(创建为单独的对象,因为标签消息必须保存在某处)

带注释的标签包含消息和提交 SHA-ID,它作为取消引用的结果(43a6228在您的情况下)呈现,并被标识为具有 ID(d5a0a25)的对象,这是检索标签消息所必需的。

因此,如果您正在寻找提交标识符,您总是需要取消引用标签。无论如何,任何标签名称本身始终是一个有效的提交标识符。

于 2012-06-14T13:02:05.207 回答