我正在尝试从我的 git repo 历史记录中完全删除一些非常大的文件。我已经尝试过几乎所有我见过的解决方案,但我永远无法让大文件对象“无法访问”,以便它们将被垃圾收集。这是我尝试过的简要说明:
# 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
我相当有信心该文件已从历史记录中清除,除了rev-list 中的这个讨厌的引用,这是不允许它被垃圾收集的原因。
如果这个对象出现在 rev-list 中,它是否永远不会被删除?如果是这样,我怎样才能从 rev-list 中删除它的引用?我已经尝试了很多命令,有很多不同的排列,但都无济于事。任何见解将不胜感激。