I have some tags on my "origin" repository. Then I realized I needed to add some changes on one of the tags, and push them back on my repository. Is there a way I can push an existing tag to the repository in one time, or should I delete the tag before ?
5 Answers
This should not be the practice, though you can delete the tag and push the change to the remote repo.
git tag -d tag1
git push origin :refs/tags/tag1
4 Comments
--follow-tags: git push --follow-tags origin :refs/tags/stage.So if you need to move a tag (eg: "v0.5") on a git branch (eg: "master") to a different commit, probably a newer one, then you can use the -f option to git tag:
-f
--force
Replace an existing tag with the given name (instead of failing)
You probably want to use -f in conjunction with -a to force-create an annotated tag instead of a non-annotated one.
Example
Delete the tag on any remote before you push
git push origin :refs/tags/<tagname>or for our example:
$ git push origin master :refs/tags/v0.5 To [email protected]:org_name/repo_name.git - [deleted] v0.5Replace the tag to reference the most recent commit (using -f will save us the
git tag -d <tagname>local tag deletion step).git tag -fa <tagname>or for our example:
$ git tag -fa "v0.5" -m "version 0.5" Updated tag 'v0.5' (was f55c93f)Push the tag to the remote origin
git push origin --tagsor for our example:
$ git push origin master --tags Counting objects: 1, done. Writing objects: 100% (1/1), 196 bytes | 0 bytes/s, done. Total 1 (delta 0), reused 0 (delta 0) To [email protected]:org_name/repo_name.git * [new tag] v0.5 -> v0.5
1 Comment
failed to push some refs to 'gitserver....'Assuming newtag is the new tag and oldtag is the old tag. Simply do:
# Create new tag that points to the same of old tag
git tag newtag oldtag
# Remove oldtag
git tag -d oldtag
# Remove oldtag in remote machine
git push --delete origin oldtag
# Propapate newtag to remote machine
git push --tags
1 Comment
git tag -d oldtag, git push --delete origin oldtag) and make new tag (git tag -a newtag HASH, git push --tags)Way simpler way to replace a tag, also on remote:
git tag -f mytagname
git push -f --tags