【发布时间】:2011-11-17 23:24:19
【问题描述】:
我有一个大斑点,我想摆脱它!
我以为我使用此解决方案删除了文件:
http://dound.com/2009/04/git-forever-remove-files-or-folders-from-history/
(我使用 -- --all 而不是 HEAD 以便从所有分支中删除文件)
rm -rf .git/refs/original/ && git reflog expire --all &&
git gc --aggressive --prune
我通过Why is my git repository so big?查看了pack文件夹
$ git verify-pack -v .git/objects/pack/pack-*.idx | sort -k3n
... last 4 lines:
bc7ae9801052180b283cd81880753549f0f92587 blob 19464809 749446 305054873
acd5f09a35846bec25ebc324738139e5caabc50f blob 294278199 71381636 39607483
986d152935434b56cf182d8a32e24cb57af75ac3 blob 480385718 108184804 110989119
ba9d1d27ee64154146b37dfaf42ededecea847e1 blob 761172819 27430741 277589990
脚本git-find-blob取自Which commit has this blob?
$ ./git-find-blob ba9d1d27ee64154146b37dfaf42ededecea847e1
但它什么也没找到。
任何想法如何从我的存储库中删除它?
【问题讨论】:
-
git status的输出是否为空?有可能 blob 已添加到索引中,但从未提交。 -
如果您还包括
git fsck --cache --unreachable $(git for-each-ref --format="%(objectname)")的输出以及没有--cache的相同命令,这可能会很有用 -
感谢您对马克的持续关注;该 blob 在命令的两个变体中都列为“无法访问的 blob”。没有
--cache标志的变体中列出了 7 个(其他)额外无法访问的 blob。 -
ref 打包了吗?是否出现在
git show-ref? -
@MarkLongair 谢谢!我想尽一切办法从我的存储库中清除 2GB 未引用的 blob,却没有意识到它们一直都在索引中! (暂缓删除)