远程复制标签?

时间:2013-08-29 12:10:55

标签: git git-tag

我制作了两个本地代码1.0.0.13081.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^{}


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

1 个答案:

答案 0 :(得分:3)

tagname^{}语法表示“标记指向的对象”。请参阅man git-rev-parse

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

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

也就是说,当您标记对象2cc0513时,您创建了一个标识为dc4ea0f的标记。