使用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标签的完整细节的一些资源:
你可以通过简单的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