带有^{}的Git分支/标记名
运行命令git ls remote将列出以下条目:带有^{}的Git分支/标记名,git,Git,运行命令git ls remote将列出以下条目: e6c1ddea6ee8eefa9e96e349dd4fad4a48c16448 refs/tags/1.1 1a3b5ae3a50ca2f24e5cd917cbf51d371f1dd01e refs/tags/1.1^{} 81901877c5add523cd4a4bb8f51ad3bbbacbd686 refs/tags/1.2 4681b1ae6ec71301019da13d1790c2f808c2c553 ref
e6c1ddea6ee8eefa9e96e349dd4fad4a48c16448 refs/tags/1.1
1a3b5ae3a50ca2f24e5cd917cbf51d371f1dd01e refs/tags/1.1^{}
81901877c5add523cd4a4bb8f51ad3bbbacbd686 refs/tags/1.2
4681b1ae6ec71301019da13d1790c2f808c2c553 refs/tags/1.2^{}
^{}
在输出中是什么意思?它们不是名称的一部分,而是一个指示器,指示它应该取消引用一个标记(并且,如果幸运的话,可以找到一个提交,尽管理论上标记可以指向另一个标记,甚至树或blob;但是如果它指向另一个标记,则^{}
继续剥洋葱层,直到它碰到非标签)
git ls remote
(或者说,远程设备本身)使用此语法向您发送commit-ID。(我不太确定如果标记最终指向树或blob会发生什么情况。)-后缀^后跟空大括号对意味着对象可能是标记,然后递归地取消对标记的引用,直到找到一个非标记对象。请参阅以下问题的答案:-您知道git为什么同时具有1.x和1.x^{}项吗?因为它是一个带注释的标记,所以标记对象是refs/tags/1.1
(或者更准确地说,e6c1dde…
)。远程服务器希望(相当有用)为您获取提交ID,这样您就可以知道您是否已经有了提交。