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