1. はじめに

AIを使用してバイブコーディングをしていると、コミットした時点に戻したい時があります。そんな時はcheckoutします。

が、checkoutだと、未追跡のファイルやディレクトリは削除してくれません。

そんな時に役立つのが git clean コマンドです。この記事では、git clean を使って未追跡ファイルを安全かつ効率的に削除する方法を詳しく解説します。

2. git cleanとは

git clean は、Gitの追跡対象外(未追跡)のファイルやディレクトリを削除するコマンドです。

2.1. 削除対象となるもの

  • 未追跡ファイル(git add されていないファイル)
  • 空のディレクトリ
  • ビルド成果物
  • エディタの一時ファイル
  • テスト用に作成したファイル

2.2. 削除対象にならないもの

  • 追跡済みファイル(git add 済み、またはコミット済み)
  • .gitignore に記載されたファイル(デフォルト)
  • ステージングエリアにあるファイル

3. 基本的な使い方

3.1. 削除対象を確認(ドライラン)

実際に削除する前に、どのファイルが削除されるかを確認することが重要です。

# 未追跡ファイルを削除対象としてリスト表示
git clean -n

# ディレクトリも含めて確認
git clean -n -d
bash

オプションの説明:

  • -n (または --dry-run): 実際には削除せず、削除対象を表示のみ
  • -d: ディレクトリも対象に含める

実行例:

$ git clean -n -d
Would remove temp.txt
Would remove build/
Would remove .DS_Store
bash

3.2. 実際に削除を実行

確認して問題なければ、実際に削除します。

# 未追跡ファイルを削除
git clean -f

# 未追跡ファイルとディレクトリを削除
git clean -f -d
bash

重要: -f (force) オプションが必須です。Git は誤削除を防ぐため、このオプションなしでは実行されません。

4. よく使用するオプション

4.1. 基本オプション

オプション 説明
-n / --dry-run 削除せずに削除対象のファイルを表示
-f / --force 実際に削除を実行(必須)
-d 未追跡ディレクトリも削除対象に含める
-i / --interactive 対話モードで各ファイルを確認

4.2. 高度なオプション

オプション 説明
-x .gitignore に記載されたファイルも削除
-X .gitignore に記載されたファイルのみ削除
-q / --quiet 削除したファイルを表示しない

5. 実用的な使用例

5.1. 開発中の一時ファイルを削除

# まず確認
git clean -n -d

# 実行
git clean -f -d
bash

5.2. ビルド成果物も含めて全て削除

# .gitignore のファイルも含めて確認
git clean -n -d -x

# 実行
git clean -f -d -x
bash

5.3. 対話モードで選択的に削除

# 各ファイルを確認しながら削除
git clean -i -d
bash

対話モードでは以下のような選択肢が表示されます:

Would remove the following items:
  temp.txt
  build/
*** Commands ***
    1: clean                2: filter by pattern    3: select by numbers
    4: ask each             5: quit                 6: help
What now>
fallback

5.4. 特定のパターンのファイルのみ削除

# .log ファイルのみ削除
git clean -f "*.log"

# 特定のディレクトリ内のみ削除
git clean -f -d src/temp/
bash

6. 注意点と安全な使い方

6.1. 必ずドライランで確認

# 危険:いきなり削除
git clean -f -d

# 安全:まず確認してから削除
git clean -n -d
git clean -f -d
bash

6.2. 重要なファイルは.gitignoreに追加

削除したくないファイルは事前に .gitignore に記載しておきます:

# 設定ファイル
config.local.json

# 開発用データ
data/development/

# IDE設定
.vscode/
.idea/
fallback

7. よくある問題と解決法

7.1. Q1: 削除されないファイルがある

原因: ファイルが .gitignore に記載されている

解決法:

# .gitignore のファイルも削除
git clean -f -d -x
bash

7.2. Q2: 削除対象が表示されない

原因: ファイルが既に追跡されている

確認方法:

# ファイルの状態を確認
git status

# 追跡されているファイルを確認
git ls-files
bash

7.3. Q3: 誤って重要なファイルを削除してしまった

対処法:

  • システムのゴミ箱を確認
  • バックアップから復元
  • 残念ながら Git では復元できません

8. まとめ

git clean は未追跡ファイルを効率的に削除できる便利なコマンドですが、削除されたファイルは復元できないため注意が必要です。

安全に使用するためのベストプラクティス:

  1. 必ずドライランで確認 (git clean -n -d)
  2. 重要なファイルは.gitignoreに追加
  3. 必要に応じてバックアップを取得
  4. 段階的に削除(まずファイルのみ、次にディレクトリ)

定期的に git clean を実行することで、クリーンな開発環境を維持できます。特にCI/CDパイプラインでビルド環境をクリーンアップする際にも非常に有用です。

慣れるまでは -n オプションでの確認を忘れずに、安全にGitリポジトリを管理していきましょう。