Git がファイルを保持している理由を知る方法はありますか? 大きなファイルを削除してコミット履歴を書き直そうとしています。これが私がしたことです:
git filter-branch -f --tree-filter "rm -rf *.mp4" 573edba..HEAD
私も試しました:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch *.mp4' 573edba..HEAD
それらが削除されたと報告されているのを見ました。私も走りましgit gc
た。
リポジトリには 2 つのブランチがあるので、マスター ブランチと開発ブランチの両方でこれを実行しました。
今、私がこれを行うと:
git ls-files | grep '.mp4'
また
git show --pretty="format:" --name-only 573edba..HEAD | grep '.mp4'
結果が出ません。
しかし、次のようにインデックス ファイルを調べると、次のようになります。
git verify-pack -v .git/objects/pack/pack-*.idx | grep -v chain | sort -k3nr
次に、最初の SHA1 を取得して、それが何であるかを確認します。
git rev-list --all --objects | grep $SHA1
私は得る/path/to/file.mp4
質問: どうすればそのファイルを完全に削除できますか? そのファイルがまだリポジトリにある理由を知るにはどうすればよいですか? Git がそこにある必要があると信じる理由は何ですか?