繁体   English   中英

如何删除仍然存在于远程但不再在我的fetch refspec中的所有远程跟踪分支

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM