[英]How to remove all remote tracking branches that still exist on remote but no longer in my fetch refspec
我最近重新组织了我的remote.origin.fetch
,现在只从远程获取一小部分分支。 但是, git branch -a
向我展示了我之前获取的许多远程分支,尽管它们现在不再被提取。 使用git prune
没有帮助,因为远程跟踪分支确实存在于远程。
robrich的答案有一个很好的提示:你可以删除每个远程跟踪分支(甚至远程),然后使用git fetch
从头开始只抓取你想要的那些。
如果您尝试同时删除所有遥控器,则可能需要备份.git / config文件,以便稍后再添加遥控器时,可以从备份中选择远程设置。
但是,删除远程不会为我删除远程跟踪分支。 也许我当地的回购很糟糕。 对于任何有同样问题的人,我最终做的是:
# This deletes all remote tracking branches for all remotes. So be careful if you have multiple remotes.
git branch -r | xargs -L 1 git branch -rD
此外,我有很多来自遥控器的标签,这会降低速度。 我也这样做了:
# Be careful! This deletes EVERY tag!
git tag | xargs -L 1 git tag -d
您可能希望将git fetch
配置为不在下次提取所有这些标记,这超出了此问题的范围。
您可以删除远程并重新添加它,然后重新配置remote.origin.fetch
。 用槌击中蚂蚁山,但它会完成工作。 你仍然需要删除本地分支(如果有的话),但这只是一个git branch -D theOffendingBranchName
。
编辑:如果你喜欢冒险,你可以通过.git/refs/
删除你不喜欢的文件。 首先备份.git文件夹 - 如果修剪出错了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.