44

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

当 refspec 将获取的结果存储在远程跟踪分支中时,会自动跟踪指向这些分支的标记。这是通过首先使用给定的 s 从远程获取来完成的,如果存储库有远程标记指向的对象,但它还没有,然后获取那些丢失的标记。如果另一端有指向您不感兴趣的分支的标签,您将不会得到它们。

有没有办法让git push行为方式相同?手册页说明如何推送无标签(默认)、所有标签 ( --tags) 或您在命令行中命名的标签。它并没有提供一种方法来将所有指向分支的人推入分支。

4

1 回答 1

78

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

git push --follow-tags

新的“ --follow-tags”选项告诉“ git push”在推出分支时推送相关的注释标签。

这不会推送所有标签,而只会推送您正在推送的分支 HEAD 可访问的标签。

正如“使用 Git 将标签推送到远程存储库? ”中所述,这仅涉及带注释的标签,而不涉及轻量级标签。

git tag 1.0(轻量级)不会被推--follow-tags,它会被推git push --tags


使用 Git 2.4.1+(2015 年第二季度),该选项可以设置为默认值。

请参阅Dave Olszewski ( )提交 a8bc269cxreg

更容易添加新的配置位,然后添加默认push.followTags打开选项的配置。--follow-tags

文档将包括:

push.followTags::

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

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

于 2013-06-20T16:54:01.713 回答