如何让“git push”包含分支内的标签?

51

当获取单个分支时,git fetch会包括指向该分支的所有标签:

当refspec将获取的结果存储在远程跟踪分支中时,将自动跟随指向这些分支的标签。这是通过使用给定的s从远程获取并且如果存储库具有被远程标记所指向但尚未获取的对象,则获取这些缺失标记来完成的。如果另一端有指向您不感兴趣的分支的标签,则不会获取它们。

是否有办法使git push以相同的方式运作?手册说明如何推送无标记(默认值)、所有标记(--tags)或您在命令行上命名的标记。它没有提供一种推送指向该分支的所有标签的方法。

1个回答

89

您可以尝试使用git1.8.3+(2013年5月):

git push --follow-tags
新的"--follow-tags"选项告诉"git push"在推送分支时推送相关的带注释标签。这不会推送所有标签,而仅会推送从你正在推送的分支HEAD(s)可访问的标签。
如"Push a tag to a remote repository using Git?"所述,这仅涉及带注释标签,而不是轻量级标签。 git tag 1.0(轻量级)将不会被--follow-tags推送,但会被git push --tags推送。
使用Git 2.4.1+ (Q2 2015),该选项可以设置为默认值。
请参阅提交 a8bc269 by Dave Olszewski (cxreg)

make it easier to add new configuration bits and then add push.followTags configuration that turns --follow-tags option on by default.

文档将包括:
push.followTags::

如果设置为true,则默认启用“--follow-tags”选项。您可以在推送时通过指定“--no-follow-tags”来覆盖此配置。

要全局启用此设置,请运行git config --global push.followTags true。它也可以在每个存储库的基础上指定。


14
只为带注释的标签工作,不适用于轻量级标签。 - netawater
在推送时,我需要在结尾添加origin master吗? - Lodyk Vovchak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接