I made two local tags, 1.0.0.1308 and 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
When I git push --tags I got on the remote:
$ 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^{}
Why it created 1.0.0.1308^{} and 1.0.1.1308^{}?
P.S.: I just tried deleting the tag on the remote (git push origin :tagname), it also deletes the one with ^{}.
The
tagname^{}syntax means "the object to which the tag points". See man git-rev-parse.Annotated tags consist of a tag object (which contains the tag message, and other data), which references another object (the thing which was actually tagged). The line
refs/tags/1.0.1.1308says that the tag object has the iddc4ea0f.The
refs/tags/1.0.1.1308^{}line then tells whoever wants to know that the tag1.0.1.1308points to the object2cc0513, which is probably a commit (although things other than commits can be tagged).That is, when you tagged the object
2cc0513, you created a tag with iddc4ea0f.