I'm trying to entirely remove some very large files from my git repo history. I've tried almost every solution I've ever seen offered, but I can never make the large file objects "unreachable" so that they will be garbage collected. Here's a rundown of what I've tried:
# finding the largest file
$ git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -n | tail -1
3d975c0908cde6010cbfcd0424eaf74c9dcf9f13 blob 1314240900 19175430 50462430
# which file?
$ git rev-list --objects --all | grep 3d975c09
3d975c0908cde6010cbfcd0424eaf74c9dcf9f13 rawdata/brownfields/GEODATA_Featureclass_MAR2013.dbf
$ git filter-branch -f --tree-filter 'git rm -fr --cached --ignore-unmatch rawdata'
$ git reflog expire --expire=now --verbose --all
$ git gc --aggressive --prune=now
$ git prune --expire now
$ git rev-list --objects --all | grep 3d975c09
3d975c0908cde6010cbfcd0424eaf74c9dcf9f13 rawdata/brownfields/GEODATA_Featureclass_MAR2013.dbf
I'm fairly confident that this file has been wiped clean from the history except for this pesky reference in the rev-list, which is what's not allowing it to be garbage-collected.
Is it true that this object will never be deleted if it shows up in the rev-list? If so, how can I remove its reference from the rev-list? I've tried so many commands, in so many different permutations, to no avail. Any insight would be much appreciated.