我创建了一个对象标签
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
为什么它报告致命?
用于指定对象的语法git cat-file
是gitrevisions中指定的语法。
<object>
要显示的对象的名称。
有关拼写对象名称的更完整列表,请参阅SPECIFYING REVISIONS
gitrevisions(7) 中的“”部分。
它适用于<rev>
.
<rev>^{<type>}, e.g. v0.99.8^{commit}
后缀
^
后跟括在大括号对中的对象类型名称意味着该对象可以是一个标签,并且递归地取消引用该标签,直到找到该类型的对象或该对象不能再被取消引用(在这种情况下,barf)。
<rev>^0
是 的简写<rev>^{commit}
。
在这种情况下,我不确定它是否可以取消引用tag_1
“直到找到该类型的对象”(因为它已经是一个标签)。