追跡対象となっていないファイルを削除します。
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…
git clean の概要
Git による管理されていないファイルを、作業ツリーから削除します。削除では、現在のディレクトリと、そのサブディレクトリを再帰的に対象にします。
デフォルトでは Git にとって未知のファイルが削除されますが、-x オプションを使った場合、ignore 指定されたファイルも含めて削除を行います。
引数でパスを指定すれば、クリーニングするディレクトリを限定することもできます。
主要なオプション
-d
追跡していないディレクトリを含めて、再帰的に削除を行います。デフォルトでは、<path> が指定されていない場合、git clean は追跡していないディレクトリを削除しません。
もし <path> が指定された場合、この -d オプションは無視されます––指定されたパスにマッチする、すべての追跡していないファイルが削除されます。(ただし、入れ子となったされた git ディレクトリは例外です。詳しくは -f オプションをお読み下さい)
【補足】この振る舞いはやや混乱します。「<path> 引数でパスを明示することで、-d オプションがなくてもあたかもあるように動作する」と理解します。
-f, --force
-f や、-i のが与えられない限り、git clean はファイルやディレクトリを削除しません。ただし、Git 設定変数 clean.requireForce が false にセットされていない場合のみです。(デフォルトは true です)
また、-f が与えれらない限り、Git は追跡していない入れ子の Git レポジトリ(.git という名前のサブディレクトリが配置されたディレクトリ)を内を変更しません。
【補足】このようなエラーで警告されます
$ git clean fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean
-i, --interactive
個々の削除対象が明示され、対話的に処理を指定しながらファイルを削除します。
Would remove the following item: file-name.txt *** Commands *** 1: clean 2: filter by pattern 3: select by numbers 4: ask each 5: quit 6: help What now>
-n, --dry-run
ドライランします。実際には削除せず、削除対象への処理を出力します。
-q, -quiet
静かに実行します。エラーのみを表示し、削除されたファイルを表示しません。
-e <pattern>, --exclude=<pattern>
標準の ignore ルールに加えて、指定された除外パターンを適応します。
-x
-e オプションで与えられた ingnore ルールだけを適応し、標準の ignore ルール を適応しません。このオプションで、追跡していないすべてのファイル(ビルド後のファイルを含む)を削除することができます。
このオプションで( git restore や git reset と組み合わせつつ )手を付けていない作業ディレクトリ、からクリーンなビルドを行うことができます。
-X
Git が無視しているファイルだけを削除します。このオプションは、手動で作成したファイルを残しながら、すべてをゼロから再構築するときに役立つでしょう。
git clean の使用例
削除されたファイルは取り戻す事ができないので、事前にドライランで様子を見るのが懸命だと思います。
// imagesディレクトリ配下を、完全にクリーニング。怖いのでドライランする git clean -xn images
更新履歴
2020/4/25 誤記の訂正を含め、全体の記述を更新。
Git公式ドキュメント
Git公式ドキュメント「git clean」へのリンクです。