我有几个标记引用来自本地分支和远程跟踪分支的提交,或这些提交的祖先。
我想删除对分支和标签的引用origin
跑完后git fetch
:
git remote prune origin --dry-run
但输出表明它会修剪我的本地标签,即使是我手动创建的标签,而不是fetch
从任何远程编辑:
* [would prune] origin/git-svn
* [would prune] origin/ignore/some_branch
* [would prune] refs/tags/MyLocalTag
* [would prune] refs/tags/MyLocalTag2
为什么 git 试图修剪我的本地标签(即使是那些指向没有上游的本地分支的标签)?
我能够再次重现此问题并将问题范围缩小到remote.origin.fetch
配置。我添加了一个 refspec 以确保git fetch
从远程获取所有标签:
[remote "origin"]
url = https://<path-to-repo>.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/tags/*:refs/tags/*
据我所知,这很像设置tagopt = --tags
,在那次跑步中git fetch origin
将把所有标签复制到.git/refs/tags
。然而,在配置文件中包含此 refspec 会产生意想不到的副作用git remote prune origin
修剪所有本地标签.
我呈交了错误报告 https://public-inbox.org/git/CACi5S_39wNrbfjLfn0xhCY+uewtFN2YmnAcRc86z6pjUTjWPHQ@mail.gmail.com/它已经遇到了一系列补丁,以更好地在文档中解释这一点,以及(讽刺的是)新标志专门启用这种删除标签的行为,而不需要在远程的获取配置中使用额外的 refspec。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)