web-dev-qa-db-ja.com

いくつかのコミットから大きなファイルを削除する(git内)

私は自分のコードベースにいくつかのローカルコミットを行い、それを自分のリポジトリにプッシュしようとしましたが、非常に多くの大きなファイルがありました。私はちょっとあきらめて、ローカルコミットをして仕事を続けました。ここで大きなファイルを削除して再度コミットしましたが、元の大きなファイルをプッシュしようとしています。最初に50 mbを超えるファイルを無視するようにコミットした後で、gitignoreを追加してみましたが、役に立ちませんでした。

何か案は?

6
Gentatsu

フィルターブランチについて ここ を読んでください。

誰かがうっかりgit add。を使用して巨大なバイナリファイルを誤ってコミットしました。おそらく、誤ってパスワードを含むファイルをコミットし、プロジェクトをオープンソースにしたいと考えています。 filter-branchは、履歴全体をスクラブするためにおそらく使用するツールです。履歴全体からpasswords.txtという名前のファイルを削除するには、-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コミットを編集できます。

11
ladorm