1

git リポジトリの履歴から非常に大きなファイルを完全に削除しようとしています。これまでに提供されたほとんどすべてのソリューションを試しましたが、大きなファイルオブジェクトを「到達不能」にして、ガベージコレクションされるようにすることはできません。これが私が試したことの要約です:

    # 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からその参照を削除できますか? 非常に多くのコマンドを、非常に多くの異なる順列で試しましたが、役に立ちませんでした。どんな洞察も大歓迎です。

4

1 に答える 1