git:找不到blob - 想从包中删除它 [英] git: can't find blob - want to get rid of it from pack
问题描述
我有一大块我想摆脱的!
我以为我使用这个解决方案删除了文件:
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
我已经在包文件夹中查找这为为什么我的git仓库如此之大?
$ git verify-pack -v .git / objects / pack / pack - *。idx |排序-k3n
......最后4行:
bc7ae9801052180b283cd81880753549f0f92587 BLOB 19464809 749446 305054873
acd5f09a35846bec25ebc324738139e5caabc50f BLOB 294278199 71381636 39607483
986d152935434b56cf182d8a32e24cb57af75ac3 BLOB 480385718 108184804 110989119
ba9d1d27ee64154146b37dfaf42ededecea847e1 BLOB 761172819 27430741 277589990
脚本 git-find-blob
是来自哪个提交有这个blob?
$ ./git-find-blob ba9d1d27ee64154146b37dfaf42ededecea847e1
但它没有找到任何东西。
任何想法如何从我的存储库中删除它?
git gc --prune = now
来放弃无法访问的对象。 您还应该仔细检查你是否真的过期了你的推荐日志。我相信 git reflog expire --all
将默认为90天(或30个用于不可访问的对象),因此您可能需要使用 git reflog expire - -expire-unreachable = now --all
改为(这需要在重新包装+ gc之前完成)。
I've a large blob that I want to get rid of!
I thought I removed the file using this solution:
http://dound.com/2009/04/git-forever-remove-files-or-folders-from-history/
(I've used -- --all
instead of HEAD
so that files are removed from all branches)
rm -rf .git/refs/original/ && git reflog expire --all &&
git gc --aggressive --prune
I've looked in the pack folder via this Why is my git repository so big?
$ 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
The script git-find-blob
is taken from Which commit has this blob?
$ ./git-find-blob ba9d1d27ee64154146b37dfaf42ededecea847e1
But it doesn't find anything.
Any ideas how to get rid of it from my repository?
You can use git repack -Ad
to force git to reconstruct your packs, and to unpack any unreachable objects into loose objects. At this point you can use git gc --prune=now
to discard the unreachable objects.
You should also double-check that you actually expired your reflogs. I believe git reflog expire --all
will default to 90 days (or 30 for unreachable objects), so you may want to use git reflog expire --expire-unreachable=now --all
instead (this needs to be done before the repack+gc).
这篇关于git:找不到blob - 想从包中删除它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!