公開されているリポジトリへのアクセス権がないファイルを誤ってプッシュしました。
その単一のファイルをリポジトリから選択的に完全に削除して、そのデータを完全に削除するにはどうすればよいですか?
公開されているリポジトリへのアクセス権がないファイルを誤ってプッシュしました。
その単一のファイルをリポジトリから選択的に完全に削除して、そのデータを完全に削除するにはどうすればよいですか?
この場合、 Git Filter -Branch はあなたの友達です。
ファイルを追加したコミットが最新のものであると仮定します。
git reset --hard HEAD^
git push --force
リポジトリにさらにコミットがある場合は、対話型リベースを使用してそのコミットを消去できます。核にしたいものの前のコミットであるgit rebase -i xxx
と一緒に使用してください。xxx
次に、エディターで、「悪い」コミットを含む行を削除します。エディターを保存して終了すると、そのコミットは永久に失われます。コミット全体を削除できない場合は、ファイル内を に置き換えpick
てedit
コミットを変更し (たとえば、ステージング領域からファイルを削除する)、実行することができます。git rebase --continue
ただし、レポからプルした人は全員、同じリベースを手動で実行する必要があります。しかし、とにかくそのファイルはすでに公開されているので、間違いを元に戻すために履歴を書き換えるべきではありません。
git-filter-branch
ファイルを削除するために使用できるすべてのリベースの代わりに、GitHub ヘルプで説明されています。
git filter-branch --index-filter 'git rm --cached --ignore-unmatch NAME_OF_THE_FILE' --prune-empty -- --all
もちろんgit push --force
、この操作の後にも必要です。履歴も書き換えられるためです (誰かがそのリポジトリからプルして作業を開始した場合のすべての注意事項があります)。リポジトリが github にある場合は、それらに連絡してリポジトリのキャッシュをクリアすることも忘れないでください。