使用^{}来命名Git分支/标签

5
运行命令git ls-remote会列出以下条目:
e6c1ddea6ee8eefa9e96e349dd4fad4a48c16448    refs/tags/1.1
1a3b5ae3a50ca2f24e5cd917cbf51d371f1dd01e    refs/tags/1.1^{}
81901877c5add523cd4a4bb8f51ad3bbbacbd686    refs/tags/1.2
4681b1ae6ec71301019da13d1790c2f808c2c553    refs/tags/1.2^{}

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

http://schacon.github.io/git/gitrevisions.html - 后缀^后面跟一个空花括号表示对象可能是一个标签,并递归地解除标签,直到找到非标签对象。 - Mike B
4
请查看以下问题的答案:
  • https://dev59.com/pmcs5IYBdhLWcg3wVyel
  • https://dev59.com/T2Up5IYBdhLWcg3wJlEH
- Mattias
可能是重复的标签在远程?的重复问题(http://stackoverflow.com/questions/18510642/duplicated-tag-on-remote) - talles
1个回答

5
他们不是名称的一部分,而是指示符 git rev-parse,它应该取消引用标签(并且有任何运气,找到提交,尽管在理论上,标签可能指向另一个标签,甚至是树或blob;但如果它指向另一个标签,^{}会继续剥离洋葱层,直到它达到非标签为止)。 git ls-remote(或者实际上是远程本身)使用这个语法向您发送提交ID。(我不太确定如果标签最终指向树或blob会发生什么。)

你知道为什么git有1.x和1.x^{}两个项目吗? - axiopisty
4
因为它是一个带有注释的标签,所以refs/tags/1.1(或更准确地说,e6c1dde...)是该标签对象。远程库想要(非常有用地)获取您的提交ID,这样您就可以确定是否已经拥有该提交。 - torek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接