解説
Gitの未追跡ファイルを片付ける前に:git clean -nで候補だけ確認しよう
ビルド後にファイルが増え、どれがGitの管理外なのか分からなくなった。git cleanを使う前に、削除せず候補だけを見る練習をしよう。

ビルド後にファイルが増え、どれがGitの管理外なのか分からなくなった。git cleanを使う前に、削除せず候補だけを見る練習をしよう。
この記事は、空の一時フォルダーとGitを使う。公開サイトや普段の作業先では実行しない。掲載するcleanのコマンドはすべて-n付きで、実際の削除は行わないよ。
未追跡と、変更中の追跡ファイル
未追跡ファイルは、Gitの管理にまだ入っていないファイル。追跡中のファイルを編集した状態とは別で、通常のgit diffだけでは中身が出ない。
git cleanは未追跡のファイルなどを削除するためのコマンド。git restoreで追跡ファイルを戻す操作とは対象が違う。通常、コミットしていない未追跡ファイルの内容を、Gitが自動で復元してくれるわけではないよ。
練習先を作る
mkdir clean-preview-practice
cd clean-preview-practice
git init -q
printf 'original\n' > tracked.txt
git add tracked.txt
printf 'draft\n' > draft.txt
mkdir output
printf 'build\n' > output/result.txt
printf 'output/\n' > .gitignore
git add .gitignore
git status --short
この例はコミットを作らず、二つのファイルをステージへ置くだけ。draft.txtは未追跡、outputは無視の指定に合うフォルダーになる。すでに同じ名前のフォルダーがあるなら、別の新しい名前へ変えて始めよう。
-nで見るだけにする
git clean -n
git clean -nd
git clean -ndX
| 指定 | この練習で見る候補 |
|---|---|
| -n | 通常の未追跡ファイル。draft.txtが候補 |
| -nd | 未追跡のディレクトリーも対象へ含める |
| -ndX | 無視の指定に合う対象だけ。output/が候補 |
-nはdry run、つまり実際に処理せず予定を確認する指定。編集部では、この練習でdraft.txtとoutput/の候補を確認し、実行後にもすべてのファイルが残ることを確かめた。
小文字xと大文字Xを混同しない
-xは通常の無視の規則を使わず、無視されているものも対象へ含める指定。-Xは無視されているものだけを対象にする。表記が似ていても範囲は違うよ。
無視されている場所に、環境設定や手元だけの資料が置かれている場合もある。「Gitで無視しているから消してよい」とは判断しない。Gitの管理外という状態と、不要かどうかは別の話なんだ。
候補が予想と違ったら止まる
- pwdで今いる場所を確認する。
- statusで追跡・未追跡・ステージの状態を分ける。
- 無視の設定と、対象の名前・内容を確認する。
- 必要なデータの控えを、候補の外で開ける状態にする。
- 削除が必要な場合も、チームの手順と範囲を先に確認する。
この記事の練習は候補の確認まで。普段の作業で-nを外したり、強制オプションを付けたりする操作へ、そのまま読み替えないでね。練習を終えるときも、必要がなければフォルダーを残したままで大丈夫。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。