Gitリポジトリの中のファイルを一括で消すコマンドといえば、よく言われるのはこれ:
git rm -rf .
しかしこれはちょっと問題があって、
というちょっと扱いづらいもの。
ならば当然こういう選択肢が出る:
rm -rf ./*
ただこれだと今度は.git
ディレクトリまで削除されてしまう。
そこでオススメするonelinearはコチラ:
git clean -fdx && test $(git ls-files | wc -l) -eq 0 || git rm -rf .
ちょっと解説。
git clean -fdx
git clean -fdx
のオプションは、
-f
: force-d
: ディレクトリを対象に-x
: ignore対象も削除これでまずUntrackedなファイル含めクリーンに。
&& test $(git ls-files | wc -l) -eq 0
次に test $(git ls-files | wc -l) -eq 0
では、
という内容。
|| git rm -rf .
最後に注目すべきは、||
でつなげてあるということ。
これにより、手前のtest
が失敗している(= ファイルが残っている)なら実行するし、成功している(= ファイルがもうない)なら実行されない。
よって、エラーを吐かせずにリポジトリの中身がクリーンにできちゃう。