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

问题描述 投票:0回答:13

我在我的机器上的 master 分支上添加了一个标签:

git tag mytag master

如何将其推送到远程存储库?运行

git push
会给出消息:

一切都是最新的

但是,远程仓库不包含我的标签。

git git-push git-tag
13个回答
5637
投票

要推送单个标签:

git push origin tag <tag_name>

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

# not recommended
git push --tags

1564
投票

git push --follow-tags

这是 Git 1.8.3 中引入的一个明智的选项:

git push --follow-tags

它推送两个提交,并且仅推送两者的标签:

  • 有注释
  • 可从推送的提交中到达(祖先)

这是明智的,因为:

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

--tags

Git 2.4 已添加

push.followTags
选项默认打开该标志,您可以使用以下命令进行设置:

git config --global push.followTags true

或者将

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

Visual Studio 代码

要在 Visual Studio Code 中激活此功能,请在用户或工作区的基础上设置变量

"git.followTagsWhenSync": true
GitHub


343
投票

要推送特定内容,一个标签执行以下操作

git push origin tag_name


126
投票

要扩展 Trevor 的答案,您可以推送单个标签或所有标签 立即标记。

推送单个标签

git push <remote> <tag>

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

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

<refspec>...

<refspec>
参数的格式是…源参考
<src>
, 接下来是冒号
:
,然后是目标参考
<dst>

<dst>
告诉远程端的哪个引用已更新 Push...如果省略
:<dst>
,则将与
<src>
相同的引用 更新了…

标签

<tag>
refs/tags/<tag>:refs/tags/<tag>
含义相同。

一次性推送所有标签

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

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

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

--tags

除了明确的参考规范之外,

refs/tags
下的所有参考都被推送 在命令行上列出。


116
投票

在当前分支中添加标签。如果您想为您的 master 创建标签,请先查看 master。

git tag tag_name

检查是否已创建

git tag

推入您的远程源

git push origin tag_name

89
投票

您可以通过简单的

git push --tags
命令推送所有本地标签。

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

70
投票

标签不会通过 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


55
投票

你可以像这样推送标签

git push --tags


27
投票

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

运行此命令将

mytag
推送到您的 git 源(例如:GitHub 或 GitLab)

git push origin refs/tags/mytag

最好使用如上所示的完整“refspec”(字面意思为

refs/tags/mytag
),以防万一
mytag
实际上是
v1.0.0
并且不明确(例如:因为有一个分支也名为
v1.0.0
)。


22
投票

我正在使用

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
投票

将标签推送到远程

git push origin mytag

从远程获取所有标签

git fetch --all --tags

3
投票

我做了这样的事情:

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

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

3
投票

就我而言,我使用的是 Git 版本

2.30.0
我尝试了
--follow-tags
--tags
,但是它们都无法将所有标签推送到远程存储库。我最终使用:

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

因此,对于那些正在寻找一种方法来将所有标签(连同主标签)推送到远程存储库的人,您只需将以下

+refs/remotes/origin/tags/*:refs/tags/*
添加到您的
push
命令中即可。

所以你的命令应该是这样的:

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

它将成功在远程存储库中创建您的所有标签。

© www.soinside.com 2019 - 2024. All rights reserved.