

git clean -f -dで未追跡ファイルとディレクトリを消す
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
オプションの意味
git clean -f -d は未追跡のファイルとディレクトリを削除するコマンド。
-f(--force): 未追跡ファイルを実際に削除する。clean.requireForceがデフォルトで有効なので、-fか-iをつけないとgitが実行を拒否する。-d: 未追跡のディレクトリも削除対象に含める。これを付けないとファイルだけが対象になり、空になった未追跡ディレクトリは残る。
追跡済みファイルの変更には一切手を出さない。あくまで「gitが把握していないもの」だけが対象。
実行前に確認する方法
いきなり-f -dを打つと何が消えたか把握しづらい。-n(--dry-run)を先に付けると、実際には消さずに削除対象だけ表示してくれる。
$ git clean -n -f -dこれで問題なさそうなら-nを外して実行する、という流れが安全。
無視ファイルとの関係
.gitignoreで無視されているファイルはデフォルトでは対象外。
- 無視ファイルも含めて全部消したい場合は
-xを追加 - 無視ファイルだけを消したい場合は
-Xを追加
普段のgit clean -f -dはこの2つを付けないので、.gitignoreに書いてあるものは残る。
注意点
事前確認なしでこのコマンドを常用するなら、エイリアスやスクリプト化する前に一度-nで試す習慣にしておいたほうがいい。オプションの意味自体はgitの基本機能で、バージョンが変わっても挙動が変わるような部分ではない。