0

我制作了两个本地标签,1.0.0.1308并且1.0.1.1308

$ git show-ref
2cc0513083619934459832c175b433ee1ecfedf9 refs/heads/master
2cc0513083619934459832c175b433ee1ecfedf9 refs/remotes/origin/HEAD
2cc0513083619934459832c175b433ee1ecfedf9 refs/remotes/origin/master
8ba818dae2fd892b44df64e4a5ee9e07d4e682fb refs/tags/1.0.0.1308
dc4ea0fb4899ea6fffc47e203923a980c0de7d98 refs/tags/1.0.1.1308

当我git push --tags打开遥控器时:

$ git ls-remote
2cc0513083619934459832c175b433ee1ecfedf9        HEAD
2cc0513083619934459832c175b433ee1ecfedf9        refs/heads/master
8ba818dae2fd892b44df64e4a5ee9e07d4e682fb        refs/tags/1.0.0.1308
6df34f6333097b77d8d6bb907155807b1e1cb19b        refs/tags/1.0.0.1308^{}
dc4ea0fb4899ea6fffc47e203923a980c0de7d98        refs/tags/1.0.1.1308
2cc0513083619934459832c175b433ee1ecfedf9        refs/tags/1.0.1.1308^{}

为什么它创建1.0.0.1308^{}1.0.1.1308^{}


PS:我刚刚尝试删除遥控器上的标签(git push origin :tagname),它也删除了带有^{}.

4

1 回答 1

3

语法的tagname^{}意思是“标签指向的对象”。见man git-rev-parse

带注释的标签由一个标签对象(包含标签消息和其他数据)组成,该对象引用另一个对象(实际标记的事物)。该行refs/tags/1.0.1.1308表示标记对象具有 id dc4ea0f

然后,该refs/tags/1.0.1.1308^{}行告诉任何想知道标签1.0.1.1308指向 object 的2cc0513人,这可能是一个提交(尽管可以标记提交以外的东西)。

也就是说,当您标记 object 时2cc0513,您创建了一个带有 id 的标记dc4ea0f

于 2013-08-29T12:43:28.957 回答