我在 git ls-remote 命令的末尾偶然发现了两个奇怪的字符,我想知道这是什么意思?
0e4c39557ccb6789173c refs/tags/2011-11-04
966f8df553f18c486820 refs/tags/2011-11-04^{}
你碰巧知道这个 ^{} 是什么意思吗?另外,为什么这个 git 标签似乎重复了?
我在 git ls-remote 命令的末尾偶然发现了两个奇怪的字符,我想知道这是什么意思?
0e4c39557ccb6789173c refs/tags/2011-11-04
966f8df553f18c486820 refs/tags/2011-11-04^{}
你碰巧知道这个 ^{} 是什么意思吗?另外,为什么这个 git 标签似乎重复了?
该^{}
符号在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。它们将显示为附加“^{}”。
请注意,git ls-remote
带有 git 2.8(2016 年 3 月)的新过滤器。
请参阅Thomas Gummerer ( )的提交 99c08d4、提交 ba5f28b、提交 80b17e5、提交 40a8852、提交 54813bd(2016 年 1 月 18 日) 。
推荐人:pedro rijo ( )。(由Junio C Hamano 合并 -- --在提交 bd6934a中,2016 年 2 月 3 日)tgummerer
pedrorijo91
gitster
这意味着您只能显示带有的标签
git ls-remote --refs
不要在输出中显示剥离的标签或像 HEAD 这样的伪引用。