【Git】git cleanコマンドとは?使い方と注意点をわかりやすく解説
はじめに
Gitで複数のファイルを管理していると、動作テストや実験的なコードの書き換えなどで、不要なファイルが作成されることがあります。ちょっとした確認用のファイルや、ビルド・テストの副産物として出力されるファイルなどが積み重なると、いつの間にか作業フォルダが散らかってしまいがちです。
そのような不要ファイルをまとめて削除して、リポジトリをきれいに保つために活躍するのがgit cleanコマンドです。とはいえ、誤って必要なファイルまで削除してしまうリスクもあるため、正しい使い方を把握しつつ注意深く運用する必要があります。
ここでは、初心者の皆さんが理解しやすいようにgit cleanコマンドの基本的な仕組みや使い方、よく使われるオプション、実務での具体的な活用シーンなどを、できるだけわかりやすく解説していきます。
この記事を読むとわかること
- git cleanコマンドの概要
- よく使われるオプション例と実際のコードサンプル
- 不要なファイルを削除する実務での活用シーン
- 安全に利用するための注意点
git cleanとは?
Gitでは、あらゆるプロジェクトのコード変更を追跡し、履歴を管理できます。しかし開発を進めていると、Gitが管理していないファイルが作業ディレクトリ内に増えることがあります。例えば、.gitignoreに含めていないログファイルや一時ファイルなどです。
こうした「未追跡ファイル(Untracked files)」や「ディレクトリ(Untracked directories)」を一括で削除してくれるのがgit cleanです。ファイルの数が少ないうちは手動で削除しても大きな問題はありませんが、規模の大きいプロジェクトだと、うっかり一時ファイルを残したままコミットしてしまうケースも出てきます。
このコマンドを上手に使えば、不要なファイルがリポジトリに混入して混乱するのを未然に防げます。実務でも一時ファイルをまとめて消したり、本番リリース前に環境をクリーンに整えたりする際に役立ちます。
いっぽうで、プロジェクトに必要なファイルまでまとめて削除してしまわないように注意が必要です。特に、リポジトリには含める必要がないが作業に必要な設定ファイルを誤って消してしまうと、開発に支障をきたす場合があります。
git cleanの基本的な使い方
git cleanは、作業ツリーから不要なファイルを削除するために使いますが、まずはどのファイルが削除対象になるのか事前に確認する習慣をつけると安全です。実務でも、「どのファイルが削除されるか分からないまま一気に消してしまった」というトラブルが起きやすいため、最初はプレビュー機能を使いながら慎重に操作しましょう。
プレビュー(ドライラン)を行う
たとえば、下記のように**-n**オプションを指定すると、実際に削除を行わずに対象ファイルの一覧だけを表示してくれます。
git clean -n
このコマンドを実行すると、どのファイルやディレクトリが削除対象となるかが表示されます。いわば「シミュレーション」なので、実行後にはまだファイルは残っている状態です。
実際にファイルを削除する
削除対象を確認したうえで問題ないと判断できたら、-fオプションを指定します。プレビューがない状態でいきなり-fを使うと、いきなり削除されるので注意しましょう。
git clean -f
-fは「force(強制)」を意味しており、ファイルを実際に削除します。初心者の方は、必ずプレビューで確認してから-fを使う癖をつけておくと安心です。
よく使われるオプション例
git cleanには様々なオプションがあります。削除対象をさらに絞り込んだり、ディレクトリも含めて一気に消したりするために使うオプション例をいくつか見てみましょう。
-dオプション:未追跡のディレクトリを含める
単に-fだけだとファイルのみ削除されます。ディレクトリごと削除したい場合は、-dを併用します。
git clean -f -d
これで未追跡のフォルダも削除対象となります。テストの生成物やビルド成果物など、複数のファイルがまとめて格納されているディレクトリを一気に消すときに便利です。
-iオプション:対話モードで確認しながら削除
特定のファイルやフォルダだけを残しておきたい場合は、-i(interactive)オプションを使うと便利です。対話形式でコマンドを実行できるため、削除対象を一つずつ選択できます。
git clean -i
このコマンドを実行すると、画面が対話モードに切り替わり、削除対象のリストを見ながら要・不要を振り分けられます。
-xオプション:.gitignoreの無視設定を無視する
普段は.gitignoreに書かれたファイルは無視対象となりますが、-xオプションを付けると、.gitignoreで指定されたファイルも含めて削除可能です。
git clean -f -x
特定の設定ファイルや一時ファイルを、.gitignoreに書いている方も多いと思います。それを含めて一気に消す場合に利用するオプションです。
いきなり -x を使うと、大切な設定ファイルやパスワードファイルが消えてしまう可能性があるので要注意です。
git cleanを使う場面
実際の開発現場では、どのようなケースでgit cleanを使うのでしょうか。いくつかの典型的なシーンを通じて具体的にイメージしてみましょう。
一時的な検証で生まれたファイルの削除
動作検証のために特殊なログを出力したり、実験的なスクリプトを作ったりすることがあります。試行錯誤が一段落ついたら、そのファイルはもう不要というケースが多いでしょう。
こうしたファイルはうっかりコミット対象に入ると、リポジトリを汚染してしまいます。定期的にgit cleanで一掃しておくと、作業ツリーをシンプルに保ちやすくなります。
本番リリース直前の環境整理
本番リリース前には、ローカル環境やテスト環境で作成された中途半端なファイルがない状態で作業するのが理想です。不要ファイルが残っていると、何が不要で何が必要か混同してしまい、想定外の手戻りが起きるかもしれません。
git cleanによって、余計なファイルやディレクトリを一挙に削除しておくと、何をデプロイすべきかが明確になります。とくに大きなプロジェクトやチーム開発では、定期的に実行しておくとスムーズです。
Dockerやビルド環境の生成物を整理
Dockerを使ってアプリケーションをビルド・実行するときに生成されるファイルやフォルダも多くあります。これらをローカル環境から一旦削除して、再度イメージを作り直すといったケースもよく見受けられます。
たとえば、ビルドキャッシュや各種の中間生成物をまとめて削除し、まっさらな状態から再ビルドすることで、不具合の原因を切り分けしやすくなるでしょう。ここでもgit clean -f -dなどを活用して、未追跡の生成物を取り除きます。
git cleanを活用する際の注意点
git cleanコマンドは便利ですが、ひとたび削除を実行するとファイルは復元が難しいです。誤削除を防ぐため、いくつかの注意ポイントを押さえておきましょう。
事前にプレビューや対話モードで確認する
前述の-nや-iオプションを使って、どのファイルが削除対象となるかを必ず把握しておきましょう。チームで作業している場合は、ほかのメンバーが一時的に必要としているファイルを勝手に消してしまうリスクも考慮します。
gitignoreを正しく設定しておく
不要なファイルが大量に生成されるようなプロジェクトでは、基本的に.gitignoreを整備しておくことが推奨されます。そうすれば、そもそも追跡対象に含まれないファイルやフォルダが明示的になり、誰が作業しても同じ基準で「必要/不要」を判断しやすくなります。
もし、既に追跡済みのファイルを除外したい場合は、git rm --cached コマンドなどを使って追跡を外す方法も検討してみてください。
チーム開発のルールづくり
git cleanはローカル作業ツリーに対して使うため、チームメンバー同士で衝突するケースは少ないように思えるかもしれません。しかし、共同作業の中で「このファイルは一時ファイルなのか、実際に必要な設定ファイルなのか」が曖昧な状態だと、誤って削除してしまうこともあり得ます。
このため、プロジェクトではどのファイルが.gitignoreに含まれるべきか、ローカルだけで使う秘密の設定ファイルがあるなら拡張子を揃えるなど、チーム全員でわかりやすい管理ルールを作っておくと安心です。
まとめ
ここまで、git cleanコマンドの概要と実務で活用される主要なオプション、そして実際の利用シーンや注意点について解説しました。Gitはバージョン管理ツールとして万能ですが、不要ファイルの扱いに手間取っているうちは、リポジトリ自体の品質や可読性が下がってしまうことがあります。
不要ファイルをまとめて削除してクリーンな状態を保つことは、チーム開発でも個人開発でも大切です。特に一時的な検証やビルド生成物を扱うプロジェクトでは、定期的にgit cleanを活用しつつ、削除する前のプレビューや対話モードによる確認を欠かさないようにすると安心です。
皆さんも、今回ご紹介した基本的な使い方や注意点を踏まえながら、不要ファイルをうまく整理し、リポジトリを常にわかりやすい状態に保ってください。