Git cat文件标记对象报告致命

Git cat文件标记对象报告致命,git,Git,我已经创建了一个对象标记 git tag -a tag_1 -m "test tag" 但以下命令报告了一个致命错误: git cat-file -t tag_1^{tag} fatal: Not a valid object name tag_1^{tag} 但是,以下方法可以很好地工作: git cat-file -t master^{commit} commit 为什么报告致命?中用于指定对象的语法与中指定的语法相同 后缀^后跟大括号对中包含的对象类型名称表示该对象可以是标记,并递归

我已经创建了一个对象标记

git tag -a tag_1 -m "test tag"
但以下命令报告了一个致命错误:

git cat-file -t tag_1^{tag}
fatal: Not a valid object name tag_1^{tag}
但是,以下方法可以很好地工作:

git cat-file -t master^{commit}
commit

为什么报告致命?

中用于指定对象的语法与中指定的语法相同

后缀
^
后跟大括号对中包含的对象类型名称表示该对象可以是标记,并递归地取消对标记的引用,直到找到该类型的对象或无法再取消对该对象的引用为止(在这种情况下,barf)。
^0
^{commit}
的缩写

在这种情况下,我不确定它是否可以在“找到该类型的对象之前”(因为它已经是一个标记)取消引用
标记1

包含树blob提交标记。下面是gitrevisions(7)^{},例如v0.99.8 ^{commit}后缀“^”,后跟大括号对中包含的对象类型名称,表示对象可以是标记,并递归地取消对标记的引用,直到找到该类型的对象或无法再取消对该对象的引用(在这种情况下,barf)^0是^{commit}的缩写。@Vince“
包含树blob提交标记”。同意。“
v0.99.8^{commit}
”表示在找到提交之前取消对标记的引用。但在您的例子中,您尝试取消对标记的引用,直到找到标记为止。我不确定它是否可以(应该)工作。最初的一个是:“递归地取消对标记的引用,直到找到该类型的对象”。请注意“该类型”的键。所以我认为如果目标类型是tag,它应该返回self。可能是出于设计(作为例外)或是在将来修复的。:)
<object>
<rev>^{<type>}, e.g. v0.99.8^{commit}