取り消し

git clean

追跡されていないファイルやディレクトリを作業ツリーから削除します。誤って作成した一時ファイルやビルド成果物をまとめて取り除く操作です。

構文 git clean [options] [path]...

オプション

フラグ 説明
-f, --force 強制的に削除します。Git はデフォルトで clean を拒否するため、このオプションが必須です。
-d ディレクトリも再帰的に削除します。-f と組み合わせて使います。
-n, --dry-run 実際には削除せず、削除対象となるファイルの一覧だけを表示します。事前確認に使います。
-x .gitignore に記載されたファイルも含めてすべての未追跡ファイルを削除します。ビルドキャッシュや依存パッケージごとリセットしたいときに使います。
-X .gitignore に記載されたファイルのみを削除します(追跡されていない通常ファイルは残ります)。
-i, --interactive 対話モードで起動し、削除するファイルを1つずつ確認しながら操作できます。

git clean は、Git が追跡していない(untracked)ファイルやディレクトリを作業ツリーから削除するコマンドです。git restore追跡済みファイルの変更を取り消すのに対し、git clean新しく作成された未追跡ファイルを削除するという役割を担います。

警告: git clean で削除したファイルは通常の方法では復元できません。必ず -n(dry-run)で確認してから実行してください。

基本的な使い方

# 削除対象を確認する(実際には削除しない)
git clean -n

# 未追跡ファイルを削除する(-f が必須)
git clean -f

# 未追跡ファイルとディレクトリをまとめて削除する
git clean -fd

dry-run で事前確認する

-n または --dry-run を使うと、実際には何も削除せず、削除されるはずのファイルの一覧だけを確認できます。

# ファイルとディレクトリの削除対象を確認
git clean -nfd
Would remove build/
Would remove temp.log
Would remove src/generated.js

実行結果を確認してから -n を外して本番実行するのが安全な手順です。

# 確認後、実際に削除
git clean -fd

.gitignore ファイルの扱い

デフォルトでは、.gitignore に記載されたファイルは削除されません。これを変更するには -x または -X を使います。

# .gitignore 対象も含めてすべて削除(node_modules、ビルド成果物なども消える)
git clean -fdx

# .gitignore に記載されたファイルだけを削除(通常の未追跡ファイルは残す)
git clean -fdX

-x-X の使い分け

オプション削除対象主な用途
なし未追跡ファイル(gitignore 除く)作業中の一時ファイル削除
-x未追跡ファイル + gitignore 対象依存パッケージごとクリーンな状態に戻す
-Xgitignore 対象のみビルドキャッシュだけ削除したい

対話モード

-i オプションで対話モードを起動すると、削除するファイルを1つずつ確認しながら選択できます。

git clean -fd -i
Would remove the following items:
  build/   temp.log
*** Commands ***
    1: clean  2: filter by pattern  3: select by numbers  4: ask each  5: quit  6: help
What now>

git restore との違い

git cleangit restore は混同されやすいコマンドです。

コマンド対象操作
git restore <file>追跡済みファイル(tracked)変更を取り消す
git clean -f <file>未追跡ファイル(untracked)ファイルを削除する

git status で表示される Changes not staged for commit: の行は git restoreUntracked files: の行は git clean で対処します。

git stash -u との使い分け

未追跡ファイルを「一時的に退避させたい」場合は git stash -u を使います。

# 未追跡ファイルを含めて一時退避(後で git stash pop で戻せる)
git stash -u

# 未追跡ファイルを完全に削除(戻せない)
git clean -fd
コマンドファイルの行方復元
git stash -uスタックに保存git stash pop で復元可能
git clean -fd完全削除復元不可

後で必要になるかもしれないファイルは git stash -u で退避するのが安全です。