带^ {}的Git分支/标签名称

axi*_*sty 5 git

运行该命令git ls-remote将列出以下条目:

e6c1ddea6ee8eefa9e96e349dd4fad4a48c16448    refs/tags/1.1
1a3b5ae3a50ca2f24e5cd917cbf51d371f1dd01e    refs/tags/1.1^{}
81901877c5add523cd4a4bb8f51ad3bbbacbd686    refs/tags/1.2
4681b1ae6ec71301019da13d1790c2f808c2c553    refs/tags/1.2^{}
Run Code Online (Sandbox Code Playgroud)

^{}输出的意思是什么?

tor*_*rek 5

它们不是名称的一部分,而是git rev-parse的指示符,它应该取消引用标记(并且,运气好的话,找到提交,尽管理论上标记可以指向另一个标记,甚至是树或blob;但如果它指向另一个标签,则^{}继续剥离洋葱层,直到它碰到非标签).

git ls-remote(或者实际上,远程本身)使用此语法向您发送commit-ID.(我不太确定如果标签最终指向树或blob会发生什么.)

  • 因为它是一个带注释的标签,所以`refs/tags/1.1`(或更确切地说,`e6c1dde ...`)是标签对象.远程想要(相当有帮助)获取提交ID,因此您可以判断您是否已经提交了提交. (4认同)