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

时间:2011-03-04 15:37:24

标签: git repository push git-push git-tag

我已将一个远程Git存储库克隆到我的笔记本电脑,然后我想添加一个标签,以便我运行

git tag mytag master

当我在笔记本电脑上运行git tag时,会显示标记mytag。然后我想将它推送到远程存储库,所以我在所有客户端上都有这个标记,所以我运行git push但是我收到了消息:

  

一切都是最新的

如果我转到桌面并运行git pull然后git tag,则不显示任何标记。

我还尝试对项目中的文件进行微小更改,然后将其推送到服务器。之后,我可以将更改从服务器提取到台式计算机,但在台式计算机上运行git tag时仍然没有标记。

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

11 个答案:

答案 0 :(得分:3196)

推送单个标记:

git push origin <tag_name>

以下命令应推送所有标记(不推荐):

git push --tags

答案 1 :(得分:800)

<强> git push --follow-tags

这是Git 1.8.3中引入的理智选择:

git push --follow-tags

它推送两个提交,只推送两个标签:

  • 注释
  • 来自推送提交的

这是理智的,因为:

出于这些原因,应该避免使用--tags

Git 2.4 has added push.followTags选项默认启用该标记,您可以设置:

git config --global push.followTags true

答案 2 :(得分:245)

要推送特定内容,请执行以下一个标记 git push origin tag_name

答案 3 :(得分:87)

要展开Trevor's answer,您可以推送单个标签或全部标签 标签一次。

推送单个标签

git push <remote> <tag>

这是解释此问题的relevant documentation摘要(其中一些 为简洁省略了命令选项):

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

<refspec>...
     

<refspec>参数的格式是......来源引用<src>,   然后是冒号:,后跟目标引用<dst> ...

     

<dst>告诉远程端的哪个ref用这个更新   推送...如果省略:<dst>,则与<src>的引用相同   更新...

     

标记<tag>表示与refs/tags/<tag>:refs/tags/<tag>相同。

一次推送所有标签

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

以下是relevant documentation(某些命令选项)的摘要 为简洁省略):

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

--tags
     除了明确的refspec之外,

refs/tags下的所有引用都被推送   在命令行中列出。

答案 4 :(得分:47)

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

答案 5 :(得分:45)

您可以按照git push --tags

这样推送标签

答案 6 :(得分:22)

您只需git push --tags命令即可​​推送本地代码。

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

答案 7 :(得分:6)

我正在使用git push <remote-name> tag <tag-name>来确保我正在推送标签。我使用它像:git push origin tag v1.0.1。此模式基于文档(man git-push):

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

答案 8 :(得分:6)

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

运行此命令将mytag推送到您的git来源(例如:GitHub或GitLab)

git push origin refs/tags/mytag

最好使用上面显示的完整“ refspec”(字面refs/tags/mytag),以防万一mytag实际上是v1.0.0且模棱两可(例如:因为也有分支名为v1.0.0)。

答案 9 :(得分:0)

您也可以使用可用的工具来创建标签。添加了一个 Git 扩展示例和源代码树。

此外,如果您希望将标签移动到远程分支,请选择“将标签推送到原点”并推送您的标签。这将有助于其他开发人员在他们迟到最新的存储库时使用或参考特定位置。

在 GitExtension/sourcetree 中打开存储库。

  • 选择要添加标签的提交。右键单击提交,您可以看到创建标签的选项。

GIT 扩展名: GIT Extension

源树: enter image description here

  • 作为另一个选项,您可以从顶部菜单中选择“创建标签”。

GIT 扩展名: enter image description here

源树: enter image description here

  • 将打开此弹出窗口,添加标签名称并根据您的要求选择“将标签推送到原点”。但首选。

GIT 扩展名: enter image description here

源树: enter image description here

答案 10 :(得分:0)

我做了这样的事情:

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

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