Git Clean: 未追跡のファイルとディレクトリを削除する
git clean を使って作業ツリーから未追跡のファイルやディレクトリを削除する方法を解説。ビルド成果物や一時ファイルを安全にクリーンアップできます。
git clean -fd詳細な説明
git clean は何をするのか?
git clean は未追跡ファイル(ステージもコミットもされていないファイル)を作業ディレクトリから削除します。追跡済みファイルを復元する git checkout や、変更をアンステージする git reset の補完的なコマンドです。
重要: まずドライランを実行
git clean は破壊的です。削除されたファイルは永久に失われます(追跡されていなかったため、reflog では復元できません)。必ずプレビューを確認してください:
# 削除対象のプレビュー
git clean -n
# ディレクトリも含めたプレビュー
git clean -nd
よく使う使い方
# 未追跡ファイルを削除
git clean -f
# 未追跡ファイルとディレクトリを削除
git clean -fd
# 未追跡ファイルと無視されたファイルも削除(完全リセット)
git clean -fdx
# 無視されたファイルのみ削除(ビルド成果物のクリーンアップ)
git clean -fdX
フラグの説明
| フラグ | 意味 |
|---|---|
-f |
強制実行(設定がない限り必須) |
-d |
未追跡ディレクトリも含める |
-n |
ドライラン — 削除対象を表示するのみ |
-x |
.gitignore に該当するファイルも含める |
-X |
.gitignore に該当するファイルのみ削除 |
-i |
インタラクティブモード |
-e <pattern> |
クリーニングから除外するパターン |
インタラクティブモード
git clean -fdi
インタラクティブモードでは、削除するファイルを選択的に選べます。
実用レシピ
# .env ファイル以外をすべてクリーン
git clean -fd -e .env
# 完全リセット(追跡済み + 未追跡 + 無視対象)
git checkout -- .
git clean -fdx
安全のための推奨事項
必ず最初に -n(ドライラン)で確認しましょう。git エイリアスの追加も検討してください:
git config --global alias.sweep "clean -fd"
git config --global alias.sweep-dry "clean -nd"
git clean は再現可能なビルド、CI 環境、そしてクリーンな作業状態への復帰に不可欠です。
ユースケース
CI パイプラインがビルド前に完全にクリーンな作業ディレクトリを必要とし、再現可能なビルドを保証するために git clean -fdx を実行してすべての未追跡ファイルと無視対象ファイルを削除する場面で使用します。