使用Git将标签推送到远程存储库?

我已经克隆了一个远程Git仓库到我的笔记本电脑,然后我想添加一个标签,所以我跑了

git tag mytag master 

当我在我的笔记本电脑上运行git tag ,会显示标签mytag 。 然后我想推这到远程存储库,所以我有我的所有客户端上的标签,所以我运行git push但我得到的消息:

一切都是最新的

如果我去我的桌面上运行git pull ,然后git tag没有标签显示。

我也试图对项目中的文件做一些小的改动,然后把它推送到服务器上。 之后,我可以从服务器上更改到我的台式电脑,但是在我的台式电脑上运行git tag时仍然没有标签。

如何将我的标签推送到远程存储库,以便所有的客户端计算机都可以看到它?

推一个标签:

 git push origin <tag_name> 

下面的命令应该推送所有的标签(不推荐):

 git push --tags 

–follow-tags是Git 1.8.3引入的一个理智的select:

 git push --follow-tags 

它推动提交和只有两个标签:

  • 注释
  • 可以从被推送的提交中访问(祖先)

这是理智的,因为:

  • 您应该只将注释标签推送到远程,并保持本地开发的轻量级标签,以避免标签冲突。 另请参阅: 带注释和不带注释的标签之间的区别是什么?
  • 它不会在不相关的分支上推注释标签

正是出于这些原因,应该避免--tags

Git 2.4 已经添加了push.followTags选项来默认打开这个标志,你可以使用它来设置:

 git config --global push.followTags true 

推特定的,一个标签做下面的git push origin tag_name

要扩展Trevor的答案 ,您可以一次推送一个标签或所有标签。

推一个标签

 git push <remote> <tag> 

这是相关文档的一个总结,说明了这一点(为简洁起见,省略了一些命令选项):

 git push [[<repository> [<refspec>…]] <refspec>... 

参数<refspec>的格式是… source ref <src> ,后跟一个冒号: ,后跟目标ref <dst>

<dst>通过这个push来告诉远程端的哪个ref被更新…如果:<dst>被省略,与<src>相同的ref将被更新…

标签<tag>refs/tags/<tag>:refs/tags/<tag>

一次推送所有的标签

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

以下是相关文档的摘要(为简洁起见,省略了一些命令选项):

 git push [--all | --mirror | --tags] [<repository> [<refspec>…]] --tags 

除了在命令行中明确列出的refspec之外,所有refs refs/tags下的refs/tags都被推送。

你可以像这个git push --tags一样git push --tags

标签不会通过git push命令发送到远程存储库。 我们需要使用以下命令将这些标签显式发送到远程服务器:

 git push origin <tagname> 

我们可以使用下面的命令一次推送所有的标签:

 git push origin --tags 

以下是关于git标签的完整细节的一些资源:

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

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

你可以通过简单的git push --tags命令来推送你的本地标签。

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

如果你在一个分支工作:

 git push --tags origin branch_name