git cat-file 将标签的父级列为树

git cat-file lists parents of tag as tree

$ git cat-file -p v0.87.1

树e2c1430c2a24b5878c4928d576f4c92f51047709 父 f70a7297f624629e34882b800c75bc4af0193d85
作者 Abc Abc 1438782699 -0700
提交者 Abc Abc 1438782699 -0700

v0.87.1

你能帮我理解这个输出吗?列出的树不在 git 日志中,但父树在。

具体来说,创建此标签的 git 标签命令是什么?标签是如何针对树创建的?

git log 将显示提交范围内的提交内容,git cat-file 将显示 DAG 中给定节点的内容。

在这种情况下,您有一个提交的内容,其中 tree 是对节点的引用,每个文件都有引用和文件名,parent 是上一次提交(可能超过一个在合并提交的情况下)。您可以通过 git log --pretty="format:% t" 显示树参考,有关自定义输出的更多信息,请参见 http://git-scm.com/docs/git-log Author 是进行更改的人,committer 是进行提交的人。大多数时候它们是相同的,但如果有人通过邮件向您发送您提交的补丁,它们将具有不同的值。

有问题的标签必须是轻量级标签,它只是一个 ref。 git cat-file 因此会向您显示标签指向的对象的内容,在本例中为提交。

您看到的是提交的正常内容,它跟踪提交的树(目录结构的快照)及其父提交和其他元数据。

如果你想创建一个带注释的标签,它实际上是对实际标签对象的引用,你必须指定 -a 或 --annotate。或者,-m 或 --message 后跟一条消息。

此外,也可以针对非提交对象创建任何一种类型的标记,但并不常见。只是这里不是这样。