我在git ls-remote命令的末尾偶然发现了两个奇怪的字符,我想知道这意味着什么?
0e4c39557ccb6789173c refs/tags/2011-11-04
966f8df553f18c486820 refs/tags/2011-11-04^{}
你碰巧知道这个^ {}是什么意思吗?另外,为什么这个git标签似乎重复了?
答案 0 :(得分:49)
gitrevisions
手册中解释了^{}
符号:
<rev>^{}, e.g. v0.99.8^{}
后缀为^后跟空括号对意味着该对象可以是标记,并递归取消引用该标记,直到找到非标记对象。
在这种情况下,refs/tags/2011-11-04
是指向标记对象0e4c39557ccb6789173c
的标记。通过执行refs/tags/2011-11-04^{}
,我们可以将标记取消引用到最终的非标记对象,在这种情况下是 - 966f8df553f18c486820
(提交)。请注意,^{}
在应用于非标记对象时是一个noop。
git show-ref
命令可用于查看标签以及最终取消引用的非标签对象:
$ git show-ref --tags
3521017556c5de4159da4615a39fa4d5d2c279b5 refs/tags/v0.99.9c
423325a2d24638ddcc82ce47be5e40be550f4507 refs/tags/v1.0rc4^{}
$ git show-ref --tags --dereference
3521017556c5de4159da4615a39fa4d5d2c279b5 refs/tags/v0.99.9c
6ddc0964034342519a87fe013781abf31c6db6ad refs/tags/v0.99.9c^{}
055e4ae3ae6eb344cbabf2a5256a49ea66040131 refs/tags/v1.0rc4
423325a2d24638ddcc82ce47be5e40be550f4507 refs/tags/v1.0rc4^{}
来自git show-ref
手册:
-d
--dereference
取消引用标记到对象ID中。它们将显示为附加“^ {}”。
答案 1 :(得分:8)
请注意,git ls-remote
有一个带git 2.8的新过滤器(2016年3月)。
commit 99c08d4见commit ba5f28b,commit 80b17e5,commit 40a8852,commit 54813bd,Thomas Gummerer (tgummerer
)(2016年1月18日)。{
建议:pedro rijo (pedrorijo91
)。
(Junio C Hamano -- gitster
--于2016年2月3日commit bd6934a合并)
这意味着您只能使用
显示标签git ls-remote --refs
不要在输出中显示去皮的标签或像HEAD这样的伪目标。