git tag delete and re-add

Chris Muench picture Chris Muench · Oct 30, 2011 · Viewed 47.4k times · Source

On git hub I re-added the tag by doing:

git tag -d 12.15
git push origin :refs/tags/12.15
git tag -a 12.15 -m '12.15'
git push --tags

The tag is still referring to the old tag on github, but locally it is done right.

UPDATE: It seems github is listing the last commit wrong, but downloading it correctly.

Answer

nickleefly picture nickleefly · May 9, 2013

The reference is https://stackoverflow.com/a/5480292/1317035

You just need to push an 'empty' reference to the remote tag name:

git push origin :tagname

Or, more expressively, use the --delete option:

git push --delete origin tagname

Pushing a branch, tag, or other ref to a remote repository involves specifying "push where, what source, what destination?"

git push where-to-push source-ref:destination-ref

A real world example where you push your master branch to the origin's master branch is:

git push origin refs/heads/master:refs/heads/master

Which because of default paths, can be shortened to:

git push origin master:master

Tags work the same way:

git push refs/tags/release-1.0:refs/tags/release-1.0

By omitting the source ref (the part before the colon), you push 'nothing' to the destination, deleting the ref on the remote end.