15

这可能是一个非常愚蠢的想法,也可能不是一个非常愚蠢的想法,但是您如何配置一个 git 存储库,以便完成的任何拉取操作也会自动从另一个存储库获取标签?

根据docs,您似乎可以在每个远程存储库的基础上执行此操作:

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

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

4

3 回答 3

8

git fetch获取标签与获取提交 ( )具有不同的效果,如“ “git fetch --tags”是否包含“git fetch ”中所述。

后者将更新分支头,并且实际上会从这些更新的分支中获取可访问的标签。
前者将获取所有标签,但不会更新分支头。

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

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


请注意,从 git 1.9/2.0(2014 年第一季度)开始,git fetch --tags将获取所有内容(如git fetch)以及标签。请参阅“ “<code>git fetch --tags”是否包含“<code>git fetch”? ”。

请求从远程获取所有标签以及正在获取的任何其他标签。

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

git config (--global) remote.<name>.tagOpt --tags

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

于 2012-09-22T08:51:55.203 回答
7

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

fetch = +refs/tags/*:refs/tags/*
于 2016-01-12T22:35:29.423 回答
2

您可以使用git config[1] 进行设置:

git config remote.origin.tagopt --tags

要全局设置它,只需添加--global开关:

git config --global remote.origin.tagopt --tags

[1] https://git-scm.com/docs/git-config#Documentation/git-config.txt-remoteltnamegttagOpt

于 2021-03-06T18:11:15.553 回答