誤っていくつかの大きなテスト wav ファイルをリポジトリにコミットしてしまい、Github アカウントの多くのスペースを使用してしまいました。これらのファイルを履歴から削除するにはどうすればよいですか?
注: これらのファイルは少し前にコミットされたものであり、HEAD コミットにはありません。
履歴を変更せずにそれらを削除する方法はないため、誰かが変更をプルした場合は、その混乱に対処する必要があるかもしれません-のアップストリームリベースからの回復をman git-rebase
参照してください。ワークフローによっては、これはかなり悪い場合があります。何らかの方法で、進行中の作業をその上でリベースして、「新しい」マスターブランチに切り替える必要があることを全員に認識させる必要があります。
コミットがまだ先端にある場合は、その前にコミットにリセットできます。
git reset --hard HEAD^
またはそれを修正します:
git rm test.wav
git commit --amend
しかし、それはもはや先端ではないので、おそらくあなたの最善の策はおそらくインタラクティブなリベースでそれを行うことです:
git rebase -i <commit-before-mistake>
修正したいコミットで「pick」を「edit」に変更して、それを実行してください。(または、問題がなければコミット全体を削除することもできます)*
これらのいずれかを選択した後は、早送りではなくなったため、強制的にプッシュする必要があります。
git push -f origin
*その後、これらのファイルに変更を加えた場合、リベースを続行すると問題が発生します。ファイルを削除したいだけなので、簡単に処理できるはずです。もちろん、それ以来100のコミットがあり、それがすべて競合を引き起こす場合は、を参照してくださいgit-filter-branch
。マニュアルページの関連する例は次のとおりです。
git filter-branch --index-filter ’git rm --cached --ignore-unmatch filename’ HEAD
git commit --amend
、それがHEADコミットである場合に使用することです。もう1つはgit rebase --interactive
です。更新されたブランチを強制的にgithubにプッシュします。
git push --force github
(github
GitHubのリモコンの名前はどこにありますか)。
これにより、アクティブな履歴から削除されます。実際にスペースを再利用するには、GitHubでガベージコレクションを実行する必要があります。彼らが自動的にそれをしないのなら、私はそれを明示的にする方法がわかりません。サポートリクエストを提出する必要があるかもしれません。