変更を扱う

未追跡ファイルの削除

作業ツリーには、git が一度もコピーを取っていないファイルがたまっていきます。走り書きの メモ、debug-output.txt、失敗したビルドが残した dist/、先月放置したブランチの node_modules。git にはこのためのコマンドが 1 つあります — git clean — そしてこれは 後ろに何も控えていない 唯一の git 操作です。その中身は一度もコミットに入っていない ので、reflog の記録もスタッシュも取り消しもなく、取り戻すための git の呪文も存在しま せん。

だからこれは、ターミナルで実行して後悔する操作なのです。Gitcito 版は、何かが起きる前に 一覧をすべて見せます。

⌘K → 未追跡ファイルの削除。

未追跡と無視されたパスが別々に、それぞれサイズ付きで並ぶ。まだ何も削除されていない

一覧の意味

各項目は git clean が届き得るパスで、ディスク上のサイズ付き、2 つのグループに 分かれます。

グループ 中身 既定で選択されるか
未追跡 一度もコミットされておらず、.gitignore にも一致しない はい
無視 .gitignore に一致する — ビルド成果物、キャッシュ、.env いいえ

この分け方こそが要点です。無視されたパスはたいてい無価値ですが、ときどき大事なものの 唯一のコピーだったりします。ローカルの .env、データベースのダンプ、ダウンロードした フィクスチャ。.gitignore に一致するものが、あなたの代わりに選択されることはありません。

まるごと未追跡の ディレクトリは 1 行 であって、ファイルごとに 1 行ではありません — tmp/、dist/、node_modules/。git がそれらを削除する粒度がそこであり、40,000 ファイルの一覧など誰も読まないからです。サイズはその中身の合計です。

独立したリポジトリ と印の付いたフォルダは、自前の .git を持っています。この中に 落としたクローンや、結局つなげなかった実験です。git はそれらの削除を拒みます (-ff を求めますが、Gitcito はそのフラグを提供しません)。ゴミ箱なら引き受けます。

ゴミ箱か、削除か

ゴミ箱へ移動 は既定でオンで、git をまったく通しません。パスはシステムのゴミ箱へ 行き、そこから戻せます。入れ子のリポジトリを取り除ける唯一の経路であり、チェックの 付け間違いを生き延びられる唯一の経路でもあります。

これをオフにすると、選択したパスだけを対象にした本物の git clean -f -d -x になり、 件数と合計サイズを目の前に置いたうえで確認を求めます。そこから復旧する手立てはありま せん。

知っておくべき制限

  • 未追跡ファイルだけです。 変更された追跡中のファイルはここにありません。それは 破棄 で、インデックスまたは HEAD から復元されます。
  • 一覧は先頭 400 パスで打ち切られます。 それより多いリポジトリでは、並んだものを 削除してから 再スキャン を押して残りを出してください。
  • ディレクトリのサイズは、非常に大きなツリーでは概算です。 スキャンは 20,000 ファイルで止まるので、巨大な node_modules は実際より小さく見えることがあります。 実際より大きく出ることはありません。
  • スキャンはスナップショットです。 ダイアログを開いている間にビルドがファイルを 書いた場合は、削除する前に 再スキャン を押してください。
  • 何かに触れる前に、パスは git 自身の「削除可能なファイル」の一覧と突き合わせられます。 だからこのダイアログを通して、名前を指定してさえ、追跡中のものが削除されることは ありません。

関連項目: ステージングと破棄 · ファイルを無視する · 履歴からファイルを削除する

この翻訳を GitHub で改善