Git エラー「fatal: clean.requireForce defaults to true」の解決方法

初級📦 Git2026-07-26| このエラーは、Git バージョン 1.7.0 以降を使用しているすべてのプラットフォーム(Windows、macOS、Linux)で発生します。必須のアクションフラグを指定せずに 'git clean' を実行するとトリガーされます。

Error Message

fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean
#git#git-clean#devops#terminal

なぜ Git は実行をブロックするのか

このエラーは、Git に組み込まれた安全装置(シートベルト)のようなものだと考えてください。git clean は破壊的なコマンドであるため、「元に戻す」ボタンやゴミ箱は存在しません。このコマンドで削除されたファイルは、ハードドライブから永久に消失します。

デフォルトでは、Git は clean.requireForce 設定を true に設定しています。自分が何をしているのかを明示的に示さない限り、削除の実行を拒否します。これを回避するには、-f-n-i といった特定のフラグを指定する必要があります。この保護機能により、単純なタイポ(打ち間違い)で、まだコミットしていない一週間分の作業成果をすべて失ってしまうのを防ぐことができます。

このエラーが通常発生するケース

この保護機能は、標準的な Linux シェルでも VS Code のターミナルでも、あらゆる Git 環境で有効です。プロジェクト内に .log ファイル、dist/ フォルダ、あるいは .gitignore にまだ追加されていない一時的な .tmp ファイルなどのビルド成果物が増えてきた際によく発生します。

エラーの解決方法

1. 「実行前に確認する」方法(最も安全)

常にドライラン(予行演習)から始めましょう。-n(または --dry-run)フラグを使用すると、実際にファイルを操作することなく、Git が削除しようとしている対象を正確に表示します。

git clean -n

追跡されていないディレクトリも削除対象に含めて確認したい場合は、-d フラグを追加します:

git clean -nd

これにより、debug.log を削除しますtemp_assets/ を削除します といった内容が出力されます。

2. 強制フラグ (-f)

リストを確認し、ファイルを一掃する準備ができたら、-f(force)フラグを使用します。これがこのエラーを解消する最も一般的な方法です。

git clean -f

追跡されていないファイルと空のディレクトリの両方を削除するには、フラグを組み合わせます:

git clean -fd

プロのヒント: 500MB もある node_modules フォルダやコンパイル済みの .pyc ファイルなど、無視設定されているファイルも削除したい場合は、-x フラグを追加します:

git clean -fx

3. 対話モード (-i)

追跡されていないファイルが多数あるものの、特定の数ファイルだけを削除したい場合は、対話モードを使用します。ターミナル上でメニュー形式のインターフェースが起動します。

git clean -i

ここから、パターンでフィルタリングしたり、番号でファイルを選択したりできます。「一括削除」の強制オプションと、手動でファイルを削除する手間のかかる作業の中間に位置する、優れた方法です。

4. 安全装置を無効にする(注意が必要)

グローバル設定を変更することで、Git が強制フラグを要求しないように設定できます。しかし、不注意で作業内容を失うリスクが高まるため、多くのシニアエンジニアはこの設定を推奨していません。

git config --global clean.requireForce false

この設定をオフにすると、git clean は即座に実行されます。たった一度のキー入力ミスが、数時間の作業の損失につながる可能性があります。

結果の確認

選択したコマンドを実行した後、ワークスペースが実際にクリーンになっているか再確認しましょう:

  • git status を実行します。「Untracked files」のリストが空、または大幅に短くなっているはずです。
  • 再度 git clean -n を試します。何も出力されなければ、ディレクトリは完全にクリーンな状態です。
  • ls -la やファイルエクスプローラーを使用して、特定の重いフォルダ(/build など)が削除されていることを確認します。

クリーンなワークフローのためのベストプラクティス

  • .gitignore を最新に保つ: 毎日 npm-debug.log をクリーンアップしているようなら、それを .gitignore に追加しましょう。不要なものを削除し続けるよりも、最初から無視する方が効率的です。
  • 捨てる代わりにスタッシュする: 後でそのファイルが必要になるか確信が持てませんか?その場合は git stash -u を使いましょう。これにより、追跡されていないファイルが一時保存領域に移動されるため、間違いに気づいたときに復元できます。
  • ドライランを習慣にする: git clean -n を実行するのにかかる時間はわずか 2 秒です。この小さな習慣が、git add し忘れた新しいソースファイルを誤って削除してしまうという悪夢を防いでくれます。

Related Error Notes