1. ホーム
  2. git

[解決済み] .gitignoreに登録されているが、まだリポジトリに残っているファイルを削除するにはどうすればよいですか?

2022-03-20 01:52:59

質問

リポジトリに無視すべきファイルがあり、.gitignoreに追加しましたが、もちろん、リポジトリから削除されません。

そこで質問なのですが、filter-branch を使って履歴を書き換え、これらのファイルを簡単に削除できる魔法のコマンドやスクリプトはないでしょうか?または、単にそれらを削除するコミットを作成するコマンドはありますか?

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

手動でリポジトリから削除することができます。

git rm --cached file1 file2 dir/file3

あるいは、ファイルがたくさんある場合。

git rm --cached `git ls-files -i -c --exclude-from=.gitignore`

しかし、これはWindows上のGit Bashではうまくいかないようです。エラーメッセージが表示されます。次のようにするとうまくいきます。

git ls-files -i -c --exclude-from=.gitignore | xargs git rm --cached  

Windows上のPowerShellでは、これはさらにうまく機能します(パスとファイル名のスペースを処理します)。

git ls-files -i -c --exclude-from=.gitignore | %{git rm --cached $_}

これらのファイルなしで履歴を全部書き換えることについて、私は非常に疑問です。 自動 の方法があります。
それに、歴史を書き換えるのは良くないことだと、みんな知っているじゃないですか:)