web-dev-qa-db-ja.com

gitリポジトリ全体からファイルを完全に削除します

Gitをプロジェクトに使用して、誤って大きな.Zipファイルをコミットに追加しました。 githubへのアップロードを開始するまで気がつきませんでした。気づいたとき、ctrl-cgit removegit commitを押して、もう一度アップロードしました(ファイルは追跡されていません)。

.Zipをコミットすると、コミットを元に戻すまでレポジトリに残るので、これは正しい選択ではなかったことを知っていますが、悲しいことに私はしませんでした。

今、誰かがレポからダウンロードしようとすると、それを行うのに多くの時間がかかり、時々git the remote end hung up unexpectedly(私が読んだことはgit configを実行することで解決できます)をもたらし、非常に迷惑です。

私のポイントは:この特定のコミットバージョンでこの特定のファイルを忘れるプル/フェッチ要求をさらに伝える方法はありますか?

35
Paulo Bu

Githubは ファイルの削除に関する便利なヘルプページ を提供します。 StackOverflowには、これをカバーする他の質問もあります

Pro Gitブックのこのセクション も参照してください。

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 gc を試して、リポジトリをさらに圧縮してクリーンアップすることもできます。

63
Paul Dixon

現在「BFG Repo-Cleaner」と呼ばれるツールがあり、これはgithub.comでfilter-branchの代替として言及されています https://help.github.com/articles/remove-sensitive-data/

ツールのページへのリンク https://rtyley.github.io/bfg-repo-cleaner/

4
bigsolom