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

如何使用Git将标记推送到远程存储库?,git,git-push,git-tag,Git,Git Push,Git Tag,我已经将一个远程Git存储库克隆到我的笔记本电脑上,然后我想添加一个标记,所以我运行了 git tag mytag master 当我在笔记本电脑上运行git-tag时,会显示标签mytag。然后我想把它推送到远程存储库,这样我的所有客户端上都有这个标签,所以我运行了gitpush,但我得到了一条消息: 一切都是最新的 如果我转到我的桌面并运行git pull,然后git tag则不会显示任何标记 我还尝试对项目中的一个文件做一些小的更改,然后将其推送到服务器。之后,我可以将更改从服务器拉到桌

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

git tag mytag master
当我在笔记本电脑上运行
git-tag
时,会显示标签
mytag
。然后我想把它推送到远程存储库,这样我的所有客户端上都有这个标签,所以我运行了
gitpush
,但我得到了一条消息:

一切都是最新的

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

我还尝试对项目中的一个文件做一些小的更改,然后将其推送到服务器。之后,我可以将更改从服务器拉到桌面计算机,但在桌面计算机上运行
git-tag
时,仍然没有标记


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

要推送单个标记,请执行以下操作:

git push origin <tag_name>

您可以像下面这样推送标签--tags

来推送特定的标签,一个标签执行以下操作
git-push-origin-tag\u-name

要展开,您可以推一个标签或所有标签 立即标记

推一个标签 以下是(一些命令选项)的摘要 为简洁起见省略):

git推送[--all |--mirror |--tags][[…]
--标签
除了refspec外,还会推送
refs/tags
下的所有ref 在命令行上列出

git推送--跟随标签

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

git push --follow-tags
它同时推送提交和以下两个标记:

  • 注释
  • 可从推式提交中访问(祖先)
这是明智的,因为:

  • 您应该只将带注释的标记推送到远程,并为本地开发保留轻量级标记,以避免标记冲突。另见:
  • 它不会在不相关的分支上推送带注释的标记
正是由于这些原因,才应该避免使用
--标记

Git 2.4默认情况下,使用
push.followTags
选项打开该标志,可以设置:

git config --global push.followTags true

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

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

git push origin <tagname>
以下是有关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标记#参见标记列表
$git推送原点#推送单个标记
$git push--tags#推送所有本地标记
我正在使用
git-push-tag
来确保我正在推一个标记。我像这样使用它:
git-push-origintagv1.0.1
。此模式基于文档(
mangitpush
):

选项
...
...
...
标记的意思与refs/tags/:refs/tags/相同。
如何将标记推送到远程存储库,以便所有客户端计算机都能看到它

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


最好使用上面所示的完整“refspec”(字面上是
refs/tags/mytag
),以防
mytag
实际上是
v1.0.0
,并且不明确(例如:因为有一个分支也被命名为
v1.0.0
)。

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

此外,如果您希望将标签移动到远程分支,则选择“将标签推送到原点”,然后推送标签。这将帮助其他开发人员在延迟存储库的最新版本时使用或引用特定的spot

在GitExtension/sourcetree中打开存储库

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

Sourcetree:

  • 作为另一个选项,可以从顶部菜单中选择“创建标记”
GIT扩展:

Sourcetree:

  • 将打开此弹出窗口,根据您的要求添加标签名称并选择“将标签推送到原点”。但我更喜欢
GIT扩展:

Sourcetree:

我做了这样的事情:

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

e.g. : git push --tags origin master v2.0
git推送--标记源
e、 g.:git push--标记原始主机v2.0

我建议不要使用或培训其他人使用
git push--tags
,因为当您的同事接受过推送所有标签的培训时,要去除坏标签可能非常困难,因为人们每次想推送新标签时都会继续推送本地的旧坏标签。正因为如此,我只建议大家现在就使用
git-push-origin
。要推一个移动的标签:
git-push-origin--force
Well@ScottJungwirth,我认为作为一名开发人员应该小心。否则,您可能建议根本不要教授可用的命令。如果您的标记与远程分支相同,并且
git push
失败,出现
错误:src refspec匹配多个。
,您可以将其作为
git push origin标记推送到@Willa,问题是“将标记推送到远程repo”因此,
git-push-origin
是这个问题更好的答案我当时还不清楚“注释”和“可从推送的提交中访问”之间是否存在和关系。我希望它能推送所有可到达的标记,不管是否有注释。可能需要编辑以确保它不是OR?这在git 2.5.0中对我不起作用,但git push origin--tags
起作用。@nNnyby请提供一个最小的示例,包含从创建回购到失败的所有必要命令,并将其发布在要点上,以便我可以尝试复制;-)谢谢你的推送提示。我不敢相信这不是现成的默认值。没有它,甚至不用费心贴标签,
git config --global push.followTags true
git push origin <tagname>
git push origin --tags
$ git tag                         # see tag lists
$ git push origin <tag-name>      # push a single tag
$ git push --tags                 # push all local tags 
OPTIONS
   ...
   <refspec>...
       ...
       tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.
git push origin refs/tags/mytag
git push --tags origin <branch-name> <tag-name>

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