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

时间:2012-09-21 15:50:32

标签: git

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

根据the docs,看起来您可以在远程保留的基础上执行此操作:

  

远程<名称> .tagopt
  将此值设置为--no-tags禁用   从远程< name>获取时自动标记跟随。设置它   to -tags将从远程< name>获取每个标记,即使它们是   远程分支机构无法访问。直接传递这些标志   到git-fetch(1)可以覆盖此设置。请参阅选项--tags和    - 没有git-fetch(1)的标签。

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

3 个答案:

答案 0 :(得分:6)

获取标记与提取提交(git fetch)的效果不同,如“Does “git fetch --tags” include “git fetch”?”中所述。

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

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

考虑到某些回购的大历史(包括linux one),总是希望获取所有标记可能会导致标记列表混乱(标记列表被数百个未被污染 - 需要的标签)。


请注意,启动git 1.9 / 2.0(2014年第一季度),git fetch --tags将获取所有内容(例如git fetch)以及标记。请参阅“Does “git fetch --tags” include “git fetch”?”。

  

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

所以你可以试试remote.<name>.tagOpt config option

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

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

答案 1 :(得分:5)

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

fetch = +refs/tags/*:refs/tags/*

答案 2 :(得分:1)

您可以使用 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