^ {}在git中意味着什么?

van*_*anz 55 git

我在git ls-remote命令的末尾偶然发现了两个奇怪的字符,我想知道这意味着什么?

0e4c39557ccb6789173c  refs/tags/2011-11-04
966f8df553f18c486820  refs/tags/2011-11-04^{}
Run Code Online (Sandbox Code Playgroud)

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

man*_*lds 51

手册中^{}解释了该表示法gitrevisions:

<rev>^{}, e.g. v0.99.8^{} 
Run Code Online (Sandbox Code Playgroud)

后缀为^后跟空括号对意味着该对象可以是标记,并递归取消引用该标记,直到找到非标记对象.

在您的情况下refs/tags/2011-11-04是标记对象,并且0e4c39557ccb6789173c是它最终解除引用的对象(提交).

refs/tags/2011-11-04^{}手册:

$ 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^{}
Run Code Online (Sandbox Code Playgroud)

取消引用标记到对象ID中.它们将显示为附加"^ {}".

  • 在这个重复的问题中可以找到更完整的解释:http://stackoverflow.com/a/15472310/83284 (8认同)

Von*_*onC 9

请注意,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
Run Code Online (Sandbox Code Playgroud)

不要在输出中显示像HEAD这样的去皮标签或伪字符.