我向计算机上的主分支添加了一个标记:

git tag mytag master

如何将其推送到远程存储库?运行git push会显示以下消息:

一切都是最新的

但是,远程存储库不包含我的标记。


当前回答

标记不会通过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 <remote> <tag>

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

git push〔〔<repository>〔<refspec>…〕〕<refspec>。。。<refspec>参数的格式是…源ref<src>,后跟冒号:,后跟目标ref<dst>…<dst>告诉远程端的哪个ref使用此更新push…如果省略:<dst>,则与<src>相同的ref将为已更新…tag<tag>表示与refs/tags/<tag>相同:refs/tags/<tag>。

一次推送所有标签

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

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

git push[-all|--mirror|--tags][<repository>[<refspec>…]]--标签除了refspec外,refs/标签下的所有refs都被推送在命令行中列出。

git push--跟随标记

这是Git 1.8.3中引入的一个合理选项:

git push --follow-tags

它同时推送提交和仅推送同时满足以下条件的标记:

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

这是理智的,因为:

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

正是出于这些原因,应该避免--标记。

Git 2.4添加了push.folloTags选项,默认情况下可以打开该标志,您可以通过以下方式设置:

git config --global push.followTags true

或者将followTags=true添加到~/.gitconfig文件的[push]部分。

标记不会通过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 origin mytag

从远程获取所有标记

git fetch --all --tags

您可以像git push一样推送标记--tags