1. ホーム
  2. git

Git リポジトリと GitHub 上のリモートからファイルを完全に削除する

2023-09-24 16:33:53

質問

間違って画像のフォルダを追加してコミットしてしまいました。その後、もう一回コミットしました。 その後、私はこれらのファイルを git rm -f ./images を使用してそれらのファイルを削除し、再度コミットしました。

今現在、そのブランチ(master)ではさらに多くのコミットをしています。私の HEAD には、このような ./static/images フォルダがありません。

このため、私のレポのサイズは大幅に増加しました。どうすればこれらの blob を完全に削除できますか?そして、リモートの GitHub リポジトリからも削除したいのですが。

どのように解決するのですか?

これは、あなたが探しているものです。 を無視するとファイルが削除されない . そのページを読むことをお勧めしますが、ここでは具体的なコマンドを紹介します。

git filter-branch --index-filter \
'git rm -r --cached --ignore-unmatch <file/dir>' HEAD

また、gitが作成するキャッシュから削除されたファイルをすべて削除する場合は、次のようにします。

rm -rf .git/refs/original/ && \
git reflog expire --all && \
git gc --aggressive --prune

最後のコマンドの詳細と、1つのアクションですべてを行うスクリプトは、こちらでご覧になれます。 git: ファイルやフォルダーを履歴から削除する .

もうひとつ、説明の多いリンクを紹介します。 機密データを削除する .

[編集]をクリックします。 また、このStackOverflowの質問も参照してください。 Git の履歴から機密ファイルやそのコミットを削除する .

(コマンドは natacado の回答からコピーしたものです)。作業コピーからすでにファイルを削除している場合は、次のようにすればうまくいくはずです。不要なファイルを追加したコミットのハッシュを見つけます。それから、そうしてください。

git filter-branch --index-filter \
'git update-index --remove filename' <introduction-revision-sha1>..HEAD
git push --force --verbose --dry-run
git push --force