数回前のコミットから大きなファイルを削除する (git 内)

数回前のコミットから大きなファイルを削除する (git 内)

コードベースにローカル コミットをいくつか作成し、リポジトリにプッシュしようとしましたが、かなり大きなファイルがありました。あきらめて、ローカル コミットを作成しながら作業を続けました。大きなファイルを削除して再度コミットしましたが、元の大きなファイルをプッシュしようとしています。最初にコミットした後、50 MB を超えるファイルを無視するように gitignore を追加してみましたが、効果はありませんでした。

何か案は?

答え1

読むここフィルターブランチについて。

誰かが、考えなしに git add . を実行して巨大なバイナリ ファイルを誤ってコミットしてしまい、それをすべて削除したいとします。パスワードを含むファイルを誤ってコミットしてしまい、プロジェクトをオープン ソースにしたいとします。filter-branch は、おそらく履歴全体を消去するために使用するツールです。passwords.txt という名前のファイルを履歴全体から削除するには、filter-branch に --tree-filter オプションを使用します。

$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten

また、それらのファイルをコミットした時点でブランチに対話型のリベースを実行し、そのコミットからファイルを削除することもできます。上記のリンクでもこれについて説明していますが、基本的には次のようになります。

git rebase -i HEAD~X

最後の X 個のコミットを編集できるようになります。

関連情報