如何配置git以在每次拉取时自动获取标签?

Ros*_*ers 9 git

这可能是也可能不是一个非常愚蠢的想法,但你怎么能配置一个git存储库,以便任何拉动完成自动从其他存储库中提取标签?

根据文档,看起来你可以在每个远程的reposistory基础上这样做:

remote.<name> .tagopt
将此值设置为--no-tags会在从远程<name>获取时禁用自动标记.将其设置为--tags将从远程<name>获取每个标记,即使它们无法从远程分支头部访问.将这些标志直接传递给git-fetch(1)可以覆盖此设置.请参阅git-fetch(1)的选项--tags和--no-tags.

有没有办法--tags为每次获取提取默认标志?

Von*_*onC 6

获取标记与获取提交(git fetch)有不同的效果,如"是"git fetch --tags"include"git fetch"? "中所述.

后者将更新分支头,并实际上将获取可从那些更新的分支到达的标签.
前者将获取所有标签,但不会更新分支头.

因此,如果您可以从正在获取的分支中访问您的标记,则--tags默认情况下不必包含.

考虑到一些repos(包括linux one)的大量历史,总是想要获取所有标签可能会导致标签列表混乱(标签列表被数百个不需要的标签污染).


请注意,启动git 1.9/2.0(2014年第一季度),git fetch --tags将获取所有内容(如git fetch),以及标记.请参阅"是" git fetch --tags"包含" git fetch"? ".

请求除了正在获取的任何其他内容之外,还要从远程获取所有标记.

所以你可以尝试remote.<name>.tagOpt 配置选项:

git config (--global) remote.<name>.tagOpt --tags
Run Code Online (Sandbox Code Playgroud)

将其设置为--tags将从远程获取每个标记<name>,即使它们无法从远程分支头部访问.


Fel*_*peC 6

只需将其添加到遥控器的配置中:

fetch = +refs/tags/*:refs/tags/*
Run Code Online (Sandbox Code Playgroud)

  • 在全球范围内可以这样做吗?不仅用于指定存储库。 (2认同)