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

Asked 2023-09-20 20:18:17 View 499,245

I added a tag to the master branch on my machine:

git tag mytag master

How do I push this to the remote repository? Running git push gives the message:

Everything up-to-date

However, the remote repository does not contain my tag.

Answers

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

Answered   2023-09-20 20:18:17

  • I recommend not using or training others to use git push --tags as it can be very very difficult to get rid of bad tags when your co-workers are trained to push all tags, as people continue to push the old bad tags they have locally every time they want to push a new tag. Because of this, I will only every advise someone to use git push origin <tag_name> now. - anyone
  • To push a moved tag: git push origin <tag_name> --force - anyone
  • If your tag is the same as remote branch and git push fails with error: src refspec <tag_name> matches more than one., you can push it as git push origin tag <tag_name> - anyone
  • Note that git push --tags origin <tag_name> IS NOT what you want - despite naming a specific tag, it pushes them all, even lightweight ones. Sigh. - anyone
  • If you want to push all tags, you could first git push --dry-run --tags origin to see what will get pushed. - anyone

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:

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.

Visual Studio Code

To activate this in Visual Studio Code set the variable "git.followTagsWhenSync": true on a user or workspace basis. GitHub

Answered   2023-09-20 20:18:17

  • It was not clear at once for me that it was an and-relation between "annotated" and "reachable from the pushed commits". I hoped it would push all reachable tags, whatever if annotated or not. Maybe edit to make sure it's not an OR? - anyone
  • This doesn't work for me in git 2.5.0, but git push origin --tags does. - anyone
  • @nnyby please provide a minimal example with all necessary commands from repo creation to failure and post it on a gist so I can try to reproduce ;-) - anyone
  • Thanks for the push.followTags tip. I can't believe this isn't the out-of-the-box default. Without it, don't even bother to tag, you'll forget and get out of sync tags. - anyone
  • Added a line about setting the follow-tags through the config file. - anyone

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

Answered   2023-09-20 20:18:17

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 [[<repository> [<refspec>…]]

<refspec>...

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] [<repository> [<refspec>…]]

--tags

All refs under refs/tags are pushed, in addition to refspecs explicitly listed on the command line.

Answered   2023-09-20 20:18:17

  • The example is leaving out the keyword tag. e.g. git push origin tag funny-tag-1. - anyone
  • @JamesThomasMoon1979 You don't need it. You push a single tag to origin like this: git push origin my-tag (I just tried it!) - anyone
  • I was using version 1.9.1, what about you @AndresF. ? - anyone
  • @JamesThomasMoon1979 Version 2.10.2. Maybe that's it? - anyone

Add a tag in your current branch. If you want to create the tag for your master, first check out to master.

git tag tag_name

Check if it's created or not

git tag

Push in your remote origin

git push origin tag_name

Answered   2023-09-20 20:18:17

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 

Answered   2023-09-20 20:18:17

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

Answered   2023-09-20 20:18:17

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

Answered   2023-09-20 20:18:17

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).

Answered   2023-09-20 20:18:17

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>.

Answered   2023-09-20 20:18:17

push tag to remote

git push origin mytag

fetch all tags from remote

git fetch --all --tags

Answered   2023-09-20 20:18:17

I did something like this :

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

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

Answered   2023-09-20 20:18:17

In my case I am using Git version 2.30.0 I tried both --follow-tags and --tags, but both of them didn't work to push all the tags to the remote repo. I ended up using:

+refs/remotes/origin/tags/*:refs/tags/*

So for those who are looking for a way to push all the tags (along with master) to a remote repo, you can just add the following +refs/remotes/origin/tags/*:refs/tags/* to your push command.

So your command should be something like this:

git push path/to/your/repo +refs/remotes/origin/tags/*:refs/tags/*

It will successfully create all your tags in the remote repo.

Answered   2023-09-20 20:18:17

  • Why overcomplicate life mate - anyone
  • @Mehdi how is that? It's just the command I used in my case when we are unable to push tags to a remote, in my cas that was the unique way to do it. - anyone
  • That was not the question though - anyone
  • Yes, maybe but it's worthy posting it, as I said it's for for those who struggle to push all their tags to a remote. It might be helpful for someone else. - anyone