Git でトラックされていないファイルを削除する方法

  1. トラックされていないすべてのファイルとディレクトリをリストアップする
  2. 追跡されていないファイルやディレクトリを削除する
  3. 無視されたファイルとディレクトリの削除

プロジェクトで作業をしていると、自分で作ったものや間違って作ってしまった不要なファイルがたくさん出てきます。そのようなファイルを .gitignore に追加して、Git にトラックされないようにします。リポジトリをクリーンにするためには、このようなファイルを削除する必要があります。Git でトラックされていないファイルを削除するには、git clean コマンドを使います。

トラックされていないすべてのファイルとディレクトリをリストアップする

一度削除したファイルやディレクトリを復元するのは難しいので、トラックされていないファイルやディレクトリをすべて削除する前に、トラックされていないファイルやフォルダをすべてリストアップしておくとよいでしょう。

現在作業中のリポジトリにあるすべての未追跡ファイルとディレクトリを表示するには、git status コマンドを使うことができます。

git status

出力:

On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	jpt/
	main.pyc

nothing added to commit but untracked files present (use "git add" to track)

これはディレクトリ jpt/ とファイル main.pyc がトラックされていないことを示しています。

また、git clean コマンドに -n オプションをつけて、削除するファイルとディレクトリをリストアップすることもできます。

git clean -d -n

出力:

Would remove jpt/
Would remove main.pyc

-d オプションは削除されるディレクトリをリストアップします。

コマンドでリストアップされたファイルやディレクトリの中に重要なものがあり、それらを残しておきたい場合は、git add コマンドを使ってリポジトリに追加するか、.gitignore ファイルにリストアップする必要があります。

追跡されていないファイルやディレクトリを削除する

追跡されていないすべてのファイルとディレクトリを確実に削除するには、次のコマンドを使用して、追跡されていないすべてのファイルとディレクトリを削除できます。

git clean -d -f

出力:

Removing jpt/
Removing main.pyc

トラックされていないファイルとディレクトリをすべて削除します。ファイルだけを削除するには、ディレクトリを削除するために -d オプションを使うべきではありません。-f オプションは、トラックされていないファイルとディレクトリを強制的に削除するためのものです。

追跡されていないファイルとディレクトリがすべて削除されたことを確認するには、git clean -d -n を使って、追跡されていないファイルとディレクトリをすべてリストアップします。ファイルとディレクトリの一覧が表示されない場合は、トラックされていないファイルとディレクトリがすべて削除されていることを意味します。

git clean コマンドと一緒に -i オプションを使うと、ラックされていないファイルとディレクトリを対話的に削除することができます。

git clean -d -i

出力:

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

プロンプトが表示され、入力した内容に基づいてさらなる操作が行われます。

無視されたファイルとディレクトリの削除

追跡されていないファイルと無視されたファイルとディレクトリをすべて削除するには、git clean コマンドに -x オプションを追加します。

git clean -d -f -x

無視されたファイルとディレクトリだけを削除するには、git clean コマンドに -X オプションを追加します。

git clean -d -f -X
comments powered by Disqus