我知道与git push --tags普通 old 分开操作的原因git push。推送标签应该是有意识的选择,因为您不想意外推送标签。没关系。但是有没有办法将两者结合在一起?(除了git push && git push --tags。)
git push --tags
git push
git push && git push --tags
正如答案中最初提到的,在我自己的答案中,从git2.4.x开始
git push --atomic origin <branch name> <tag>
(注意:这实际上仅适用于 HTTPS 与 Git 2.24)
从git 2.4.1开始,您可以这样做
git config --global push.followTags true
如果设置为 true,则默认启用 –follow-tags 选项。 您可以通过指定 –no-follow-tags 在推送时覆盖此配置。
正如马特罗杰斯在回答韦斯赫德的帖子中指出的那样:
--follow-tags 只推送带注释的标签 。
--follow-tags
git tag -a -m "I'm an annotation" <tagname>
这将被推送(而不是git tag <tagname>轻量级标签,不会被推送,正如我在这里提到的
git tag <tagname>
从git 1.8.3 (April 22d, 2013) 开始, 您不再需要执行 2 个命令来推送分支,然后推送标签 :
新的“ --follow-tags”选项告诉“ git push” 在推出分支时推送相关的注释标签 。
您现在可以在推送新提交时尝试:
git push --follow-tags
不过,这不会推送 所有 本地标签,只会推送提交引用的标签,这些标签使用git push.
Git 2.4.1+(2015 年第 2 季度)将引入该选项push.followTags:请参阅“如何gitpush在分支中包含标签?
push.followTags
gitpush
核选项将是git push --mirror,这将推动所有裁判refs/。
git push --mirror
refs/
您还可以在当前分支提交中只推送一个标签:
git push origin : v1.0.0
您可以将该--tags选项与 refspec 结合起来,例如:
--tags
git push origin --tags :
(因为意味着: _ 除了在命令行上明确列出的 refspecs 之外,*_--tags所有 refsrefs/tags都被推送) _ *_
refs/tags
您也有这个条目“使用单个“git push”调用推送分支和标签“
Zolt谩n Fuezesi刚刚在Git 邮件列表中发布了一个方便的提示: 我.git/config用来解决这个问题:
Zolt谩n Fuezesi刚刚在Git 邮件列表中发布了一个方便的提示:
我.git/config用来解决这个问题:
.git/config
[remote "origin"] url = ... fetch = +refs/heads/*:refs/remotes/origin/* push = +refs/heads/* push = +refs/tags/*
添加这些行后,git push origin将上传您的所有分支和标签。如果您只想上传其中的一部分,您可以枚举它们。 我自己还没有尝试过,但它看起来可能很有用,直到将一些同时推送分支和标签的其他方式添加到 git push 中。 另一方面,我不介意输入: $ git push && git push --tags
添加这些行后,git push origin将上传您的所有分支和标签。如果您只想上传其中的一部分,您可以枚举它们。
git push origin
我自己还没有尝试过,但它看起来可能很有用,直到将一些同时推送分支和标签的其他方式添加到 git push 中。 另一方面,我不介意输入:
$ git push && git push --tags
push = +refs/heads/*将 强制推动你所有的分支 。
push = +refs/heads/*
这刚刚咬了我一口,仅供参考。
René添加了这个有趣的评论:
该--follow-tags参数具有误导性,因为仅.git/refs/tags考虑了下面的标签。 如果git gc运行,标签将从 移动.git/refs/tags到.git/packed-refs。之后git push --follow-tags ...不再按预期工作。
.git/refs/tags
git gc
.git/packed-refs
git push --follow-tags ...