8

誤っていくつかの大きなテスト wav ファイルをリポジトリにコミットしてしまい、Github アカウントの多くのスペースを使用してしまいました。これらのファイルを履歴から削除するにはどうすればよいですか?

注: これらのファイルは少し前にコミットされたものであり、HEAD コミットにはありません。

4

2 に答える 2

11

履歴を変更せずにそれらを削除する方法はないため、誰かが変更をプルした場合は、その混乱に対処する必要があるかもしれません-のアップストリームリベースからの回復を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

于 2009-10-20T19:17:13.587 に答える
2
  1. コミットしたブランチのローカル履歴から削除します。これを行う1つの方法はgit commit --amend、それがHEADコミットである場合に使用することです。もう1つはgit rebase --interactiveです。
  2. 更新されたブランチを強制的にgithubにプッシュします。

    git push --force github
    

    githubGitHubのリモコンの名前はどこにありますか)。

これにより、アクティブな履歴から削除されます。実際にスペースを再利用するには、GitHubでガベージコレクションを実行する必要があります。彼らが自動的にそれをしないのなら、私はそれを明示的にする方法がわかりません。サポートリクエストを提出する必要があるかもしれません。

于 2009-10-20T19:15:32.957 に答える