Gitでバージョン管理を行っている際、特定のファイルを.gitignoreに後から追加した場合、そのファイルはローカルの作業ディレクトリでは無視されますが、過去のコミット履歴には依然として残ります。これは、意図せず大量のファイルがリポジトリに含まれ、リポジトリのサイズが大きくなってしまう問題を引き起こす可能性があります。
この問題を解決するために、以下のコマンドを使用して過去のコミットから特定のファイルを削除することが可能です。
git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch *.png *.jpg *.woff" --prune-empty -- --all
これにより、過去の全てのコミットから.png、.jpg、.woffファイルが削除されます。
また、この操作は新たに一連のコミットを作成し、それらをブランチの先頭に配置します。この過程で不要なファイルが生成されるため、以下のコマンドを使用してこれらを削除します。
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --aggressive --prune=now
これにより、Gitのデータベースが最適化され、不要なファイルが削除されます。
詳しくは以下のリンクをご覧ください。
https://dskd.jp/archives/46.html