7

我最近重新组织了我的 refspec,remote.origin.fetch现在只从远程获取一小部分分支。但是,git branch -a向我展示了我之前获取的许多远程分支,尽管现在不再获取它们。使用git prune没有帮助,因为那些远程跟踪分支确实存在于远程。

4

2 回答 2

10

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为下次不取回所有这些标签,这超出了此问题的范围。

于 2013-03-28T01:08:30.240 回答
1

您可以删除遥控器并重新添加它,然后重新配置remote.origin.fetch. 它用木槌敲击蚂蚁山,但它会完成工作。您仍然需要删除本地分支(如果有),但这只是git branch -D theOffendingBranchName.

编辑: 如果你喜欢冒险,你可以通过.git/refs/删除你不喜欢的文件来掠夺。不过,请先备份您的 .git 文件夹——以防修剪出错。

于 2013-03-27T04:46:55.037 回答