git中的^ {}是什么意思?

我偶然发现了一个git ls-remote命令结尾的两个奇怪的字符,我想知道这是什么意思?

0e4c39557ccb6789173c refs/tags/2011-11-04 966f8df553f18c486820 refs/tags/2011-11-04^{} 

你碰巧知道这个^ {}是什么意思? 另外,为什么这个git标签似乎重复?

gitrevisions手册中解释了^{}符号:

 <rev>^{}, eg v0.99.8^{} 

后缀^后跟一个空括号对意味着该对象可能是一个标签,并recursion引用标签,直到find一个非标签对象。

在你的情况下, 0e4c39557ccb6789173c是标记对象, 966f8df553f18c486820是它最终解除引用的对象(提交)。

git show-ref手册:

 -d --dereference 

将标签解引用到对象ID中。 它们将以附加的“^ {}”显示。

请注意, git ls-remote有git 2.8(2016年3月)的新filter。

参见提交99c08d4 , 提交ba5f28b , 提交80b17e5 , 提交40a8852 , 提交54813bd (2016年1月18日)通过Thomas Gummerer( tgummerer ) 。
build议: pedro rijo( pedrorijo91 ) 。
(由Junio C gitster合并- gitster – in commit bd6934a ,2016年2月3日)

这意味着你可以只显示标签

 git ls-remote --refs 

不要在输出中显示剥皮的标签或像HEAD这样的伪码。