git remote add携带--no-tags参数仍拉取标签的原因是什么?
问题原因
你遇到的现象是git的设计逻辑导致的,不是bug:
git remote add的--no-tags参数作用是为新增的远程仓库配置remote.<远程名>.tagOpt = --no-tags,该配置仅对后续执行的fetch/pull操作生效- 当你同时搭配
--fetch参数时,git remote add会先执行初始拉取操作,再写入--no-tags配置,这次初始拉取不会用到还没写入的配置,所以会把所有标签都拉取下来。
解决办法
方案1:拆分命令避免初始拉取带标签
不要同时使用--fetch和--no-tags,分两步执行即可:
- 先添加远程仓库并配置不自动拉取标签
git remote add --no-tags upstream https://github.com/phdru/mimedecode.git
- 手动执行拉取操作,此时会自动应用
--no-tags配置,不会拉取标签
git fetch upstream
方案2:已经拉取了多余标签的处理
如果已经执行了带--fetch的命令拉了不需要的标签,可以执行以下命令删除本地所有远程标签:
git tag -l | xargs git tag -d
验证配置
你可以执行以下命令确认配置已生效:
git config remote.upstream.tagOpt
如果输出为--no-tags,说明后续所有对该远程仓库的拉取操作都不会自动拉取标签。
内容的提问来源于stack exchange,提问作者Michel Charpentier
相关产品推荐
相关产品推荐

