
gitで未追跡ファイルを完全に削除する方法(git clean)
はじめに
開発を進めていると、gitで追跡していないファイル(untracked files)がリポジトリ内に溜まってしまうことがあります。
AIに書いてもらったけど、元に戻したい。checkoutすると、追跡しているファイルは戻せるのですが、追跡していないファイルは削除してくれません。
先に結論
git clean -fd
を使えばOKです。
コマンド | 説明 |
---|---|
git clean -fd | 未追跡のファイルとディレクトリを削除(結果、これをよく使う) |
git clean -n | 削除対象のファイルとディレクトリを一覧表示(ドライラン) |
git clean -f | 未追跡のファイルを削除 |
git clean -fx | .gitignore で無視しているファイルも含め、未追跡のファイルとディレクトリを削除 |
git clean とは?
git clean
は、gitリポジトリから未追跡ファイルを削除するためのコマンドです。git reset --hard
や git checkout
が追跡中のファイル(tracked files)を操作するのに対し、git clean
は追跡されていないファイルのみを対象とします。
注意: git clean
で削除したファイルは元に戻すことができません。実行する前には、必ず削除対象のファイルを確認することをお勧めします。
削除対象のファイルを確認する (ドライラン)
実際にファイルを削除する前に、どのファイルが削除対象になるかを確認するのが安全です。-n
または --dry-run
オプションを使うことで、削除される予定のファイルリストを表示できます。
git clean -n
このコマンドを実行すると、削除されるファイルの一覧が表示されますが、実際の削除は行われません。
未追跡ファイルを削除する
ドライランで問題がないことを確認したら、いよいよファイルを削除します。-f
または --force
オプションが必要です。
git clean -f
このコマンドは、未追跡のファイルのみを削除します。ディレクトリは対象外です。
ディレクトリもまとめて削除する
未追跡のディレクトリも一緒に削除したい場合は、-d
オプションを追加します。
git clean -fd
これにより、未追跡のファイルとディレクトリの両方が削除されます。
.gitignore
で無視しているファイルも削除する
通常、git clean
は .gitignore
で指定されているファイル(例えば node_modules
や dist
など)は削除しません。これらの無視されているファイルも含めてすべてクリーンにしたい場合は、-x
オプションを使います。
git clean -fdx
このコマンドは、追跡されておらず、かつ .gitignore
で無視されているファイルやディレクトリもすべて削除するため、リポジトリをクリーンな状態に戻したいときに非常に強力です。
まとめ
git clean
は非常に便利なコマンドですが、その破壊的な性質を理解し、必ず -n
(ドライラン) で削除対象を確認してから実行するようにしましょう。