这将被推送(与git tag <tagname>相反,git tag <tagname>是一个轻量级标记,不会被推送,如I mentioned here) 2013年4月更新 从git 1.8.3(April 22 d,2013)开始,你不再需要执行两个命令来推送分支,然后推送标签: 新的“--follow-tags“选项告诉“git push“在推出分支时推出相关的注解标记。 现在,在推送新提交时,您可以尝试:
git push --follow-tags
这不会推送 * 所有 * 本地标签,只会推送由git push推送的提交所引用的标签。 Git 2.4.1+(2015年第二季度)将引入push.followTags选项:参见“How to make “ git push ” include tags within a branch?“。 原始答案,2010年9月 核选项将是git push --mirror,这将把所有的参考下refs/。 你也可以在当前的分支提交中只推送一个标签:
6条答案
按热度按时间ugmeyewa1#
2020年8月更新
正如最初在SoBeRich的this回答中提到的,以及在我的own answer中提到的,截至git 2.4.x
(Note:实际上是work with HTTPS only with Git 2.24)
2015年5月更新
从git 2.4.1开始,您可以
如果设置为true,则默认启用--follow-tags选项。
您可以通过指定--no-follow-tags在推送时覆盖此配置。
如this thread by Matt Rogers answering Wes Hurd中所述:
--follow-tags
仅推送带注解的标记。这将被推送(与
git tag <tagname>
相反,git tag <tagname>
是一个轻量级标记,不会被推送,如I mentioned here)2013年4月更新
从git 1.8.3(April 22 d,2013)开始,你不再需要执行两个命令来推送分支,然后推送标签:
新的“
--follow-tags
“选项告诉“git push
“在推出分支时推出相关的注解标记。现在,在推送新提交时,您可以尝试:
这不会推送 * 所有 * 本地标签,只会推送由
git push
推送的提交所引用的标签。Git 2.4.1+(2015年第二季度)将引入
push.followTags
选项:参见“How to make “git push
” include tags within a branch?“。原始答案,2010年9月
核选项将是
git push --mirror
,这将把所有的参考下refs/
。你也可以在当前的分支提交中只推送一个标签:
您可以将
--tags
选项与如下refspec组合使用:(因为
--tags
表示:推送refs/tags
下的所有引用,除了命令行中明确列出的引用规范)您还可以输入“Pushing branches and tags with a single "git push" invocation“
Zoltán Füzesi刚刚在Git mailing list上发布了一个实用的提示:
我使用
.git/config
来解决这个问题:添加了这些行之后,
git push origin
将上传所有分支和标记。如果你只想上传其中的一部分,你可以枚举它们。我自己还没有尝试过,但是看起来在git push中添加其他同时推送分支和标签的方法之前,它可能会很有用。
另一方面,我不介意输入:
当心,如Aseem Kishore所评论
push = +refs/heads/*
将强制推送所有分支。它刚才咬了我,告诉你。
René Scheibe添加了以下有趣的注解:
--follow-tags
参数容易引起误解,因为只考虑.git/refs/tags
下的标记。如果运行
git gc
,则标记将从.git/refs/tags
移动到.git/packed-refs
。之后,git push --follow-tags ...
不再按预期工作。ovfsdjhp2#
自Git 2.4以来:
gg0vcinb3#
假设你在github上创建了一个新的repo,那么第一步就是克隆这个repo:
git clone {Your Repo URL}
你做你的工作,添加一些文件,代码等,然后推送您的更改:
现在我们的修改在main分支中。让我们创建一个标签:
如果要删除标记:
sauutmhj4#
刚刚在git 2.31.0上测试过:
git push <refspec> --tags
。这样做的优点是它推送所有标签,而不仅仅是像--follow-tags
这样的注解标签。o2gm4chl5#
为了避免在Gitlab上为同一个提交触发两个CI构建:
如@user1160006在此建议。
smtd7mpg6#
Git GUI有一个PUSH按钮-请原谅这个双关语,它打开的对话框有一个标签复选框。
我从命令行推送了一个没有标记的分支,然后使用上面描述的
--follow-tags
选项再次尝试推送该分支。该选项描述为以下带注解的标记。我的标记是简单的标记。我已经修复了一些东西,用修复标记了提交,(这样同事们就可以挑选修复),然后更改了软件版本号,并标记了我创建的发布版本(这样同事们就可以克隆那个发布版本)。
Git返回时说一切都是最新的,但它没有发送标签,可能是因为标签没有注解,也可能是因为分支上没有新内容。
当我使用Git GUI执行类似的推送操作时,标签被发送了。
目前,我打算使用Git GUI将我的更改推送到远程设备,而不是使用命令行和
--follow-tags
。