How do you push a tag to a remote repository using Git?

GitGit PushGit Tag

Git Problem Overview


I have cloned a remote Git repository to my laptop, then I wanted to add a tag so I ran

git tag mytag master

When I run git tag on my laptop the tag mytag is shown. I then want to push this to the remote repository so I have this tag on all my clients, so I run git push but I got the message:

> Everything up-to-date

And if I go to my desktop and run git pull and then git tag no tags are shown.

I have also tried to do a minor change on a file in the project, then push it to the server. After that I could pull the change from the server to my Desktop computer, but there's still no tag when running git tag on my desktop computer.

How can I push my tag to the remote repository so that all client computers can see it?

Git Solutions


Solution 1 - Git

To push a single tag:

git push origin <tag_name>

And the following command should push all tags (not recommended):

# not recommended
git push --tags

Solution 2 - Git

git push --follow-tags

This is a sane option introduced in Git 1.8.3:

git push --follow-tags

It pushes both commits and only tags that are both:

  • annotated
  • reachable (an ancestor) from the pushed commits

This is sane because:

  • you should only push annotated tags to the remote, and keep lightweight tags for local development to avoid tag clashes. See also: https://stackoverflow.com/questions/11514075
  • it won't push annotated tags on unrelated branches

It is for those reasons that --tags should be avoided.

Git 2.4 has added the push.followTags option to turn that flag on by default which you can set with:

git config --global push.followTags true

or by adding followTags = true to the [push] section of your ~/.gitconfig file.

Solution 3 - Git

To push specific, one tag do following git push origin tag_name

Solution 4 - Git

To expand on Trevor's answer, you can push a single tag or all of your tags at once.

Push a Single Tag

git push <remote> <tag>

This is a summary of the relevant documentation that explains this (some command options omitted for brevity):

> git push [[ […]] > > ... > The format of a <refspec> parameter is…the source ref <src>, > followed by a colon :, followed by the destination ref <dst>… > > The <dst> tells which ref on the remote side is updated with this > push…If :<dst> is omitted, the same ref as <src> will be > updated… > > tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.

Push All of Your Tags at Once

git push --tags <remote>
# Or
git push <remote> --tags

Here is a summary of the relevant documentation (some command options omitted for brevity):

> git push [--all | --mirror | --tags] [ […]] > > --tags > All refs under refs/tags are pushed, in addition to refspecs explicitly > listed on the command line.

Solution 5 - Git

You can push all local tags by simply git push --tags command.

$ git tag                         # see tag lists
$ git push origin <tag-name>      # push a single tag
$ git push --tags                 # push all local tags 

Solution 6 - Git

Tags are not sent to the remote repository by the git push command. We need to explicitly send these tags to the remote server by using the following command:

git push origin <tagname>

We can push all the tags at once by using the below command:

git push origin --tags

Here are some resources for complete details on git tagging:

http://www.cubearticle.com/articles/more/git/git-tag

http://wptheming.com/2011/04/add-remove-github-tags

Solution 7 - Git

You can push the tags like this git push --tags

Solution 8 - Git

> How can I push my tag to the remote repository so that all client computers can see it?

Run this to push mytag to your git origin (eg: GitHub or GitLab)

git push origin refs/tags/mytag

It's better to use the full "refspec" as shown above (literally refs/tags/mytag) just in-case mytag is actually v1.0.0 and is ambiguous (eg: because there's a branch also named v1.0.0).

Solution 9 - Git

I am using git push <remote-name> tag <tag-name> to ensure that I am pushing a tag. I use it like: git push origin tag v1.0.1. This pattern is based upon the documentation (man git-push):

OPTIONS
   ...
   <refspec>...
       ...
       tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.

Solution 10 - Git

Add a tag in your current branch

git tag tag_name

Check if it's created or not

git tag

Push in your remote origin

git push origin tag_name

Solution 11 - Git

I did something like this :

git push --tags origin <branch-name> <tag-name>

e.g. : git push --tags origin master v2.0

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJonasView Question on Stackoverflow
Solution 1 - GitTrevorView Answer on Stackoverflow
Solution 2 - GitCiro Santilli Путлер Капут 六四事View Answer on Stackoverflow
Solution 3 - GitsolgarView Answer on Stackoverflow
Solution 4 - Gituser456814View Answer on Stackoverflow
Solution 5 - GitSajib KhanView Answer on Stackoverflow
Solution 6 - GitAshutosh MeherView Answer on Stackoverflow
Solution 7 - GitFernando Diaz GarridoView Answer on Stackoverflow
Solution 8 - GitMichael AltfieldView Answer on Stackoverflow
Solution 9 - GitCarl GView Answer on Stackoverflow
Solution 10 - GitRaisul IslamView Answer on Stackoverflow
Solution 11 - GitAlferd NobelView Answer on Stackoverflow