現在のGit作業ツリーからローカル(追跡されていない)ファイルを削除する方法

2008年09月14日に質問されました。  ·  閲覧回数 2.4M回  ·  ソース

Readonly picture
2008年09月14日

現在の作業ツリーから追跡されていないローカルファイルをどのように削除しますか?

回答

Andreas Ericsson picture
2008年09月16日
8932

git- clean-追跡されていないファイルを作業ツリーから削除します

あらすじ

git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…​

説明

現在のディレクトリから開始して、バージョン管理下にないファイルを再帰的に削除することにより、作業ツリーをクリーンアップします。

通常、Gitに認識されていないファイルのみが削除されますが、 -xオプションが指定されている場合、無視されたファイルも削除されます。 これは、たとえば、すべてのビルド製品を削除するのに役立ちます。

オプションの<path>...引数を指定すると、それらのパスのみが影響を受けます。


ステップ1は、 -nオプションを使用して削除されるものを表示することです。

# Print out the list of files and directories which will be removed (dry run)
git clean -n -d

クリーンステップ-注意:これによりファイルが削除されます

# Delete the files from the repository
git clean -f
  • ディレクトリを削除するには、 git clean -f -dまたはgit clean -fd
  • 無視されたファイルを削除するには、 git clean -f -Xまたはgit clean -fX
  • 無視されたファイルと無視されなかったファイルを削除するには、 git clean -f -xまたはgit clean -fx

後者の2つのコマンドのXの大文字と小文字の違いに注意してください

構成でclean.requireForceが "true"(デフォルト)に設定されている場合は、 -fを指定する必要があります。そうしないと、実際には何も起こりません。

詳細については、 git-cleanドキュメントを再度参照してください。


オプション

-f--force

Git構成変数clean.requireForceがfalseに設定されていない場合、 -f-nまたは-i指定されない限り、gitcleanは実行を拒否します。

-x

.gitignore(ディレクトリごと)および$GIT_DIR/info/excludeから読み取られた標準の無視ルールは使用しないでください。ただし、 -eオプションで指定された無視ルールは使用してください。 これにより、ビルド製品を含む、追跡されていないすべてのファイルを削除できます。 これを使用して(おそらくgit resetと組み合わせて)、クリーンなビルドをテストするための元の作業ディレクトリを作成できます。

-X

Gitによって無視されたファイルのみを削除します。 これは、すべてを最初から再構築するのに役立つ場合がありますが、手動で作成したファイルは保持します。

-n--dry-run

実際には何も削除せず、何が行われるかを示してください。

-d

追跡されていないファイルに加えて、追跡されていないディレクトリを削除します。 追跡されていないディレクトリが別のGitリポジトリによって管理されている場合、デフォルトでは削除されません。 このようなディレクトリを本当に削除したい場合は、 -fオプションを2回使用してください。

robert.berger picture
2009年05月27日
1037

git clean -f -dを使用して、ディレクトリも削除されていることを確認します。

  1. 実際には何も削除せず、何が行われるかを示してください。

    git clean -n
    

    または

    git clean --dry-run
    
  2. 追跡されていないファイルに加えて、追跡されていないディレクトリを削除します。 追跡されていないディレクトリが別のGitリポジトリによって管理されている場合、デフォルトでは削除されません。 このようなディレクトリを本当に削除したい場合は、 -fオプションを2回使用してください。

    git clean -fd
    

次に、ファイルがgit status本当になくなったかどうかを確認できます。

SystematicFrank picture
2013年12月31日
494

私はこれまで誰もこれについて言及しなかったことに驚いています:

git clean -i

これはインタラクティブの略で、削除される内容の概要がわかり、影響を受けるファイルを含めたり除外したりすることができます。 全体として、実際のクリーニングの前に必須の--dry-run実行するよりもさらに高速です。

空のフォルダも処理したい場合は、 -dする必要があります。 最後に、それは素晴らしいエイリアスになります:

git iclean

そうは言っても、インタラクティブなコマンドを手で持っていると、経験豊富なユーザーにとっては疲れます。 最近は、すでに述べたgit clean -fd使用しています

Thanga picture
2016年06月03日
270

追跡されていないファイルを削除する簡単な方法

追跡されていないすべてのファイルを削除するには、最初にすべてのファイルをリポジトリ

git add --all
git reset --hard HEAD

Michał Szajbe picture
2013年01月25日
261

追跡されていないディレクトリがそれ自体のgitリポジトリ(サブモジュールなど)である場合は、 -f 2回使用する必要があります。

git clean -d -f -f

hiroshi picture
2014年01月11日
144

git stash popすべて元に戻すことができるので、 git stash push -uが好きです。

編集:また、追跡されていないファイルを隠し場所に表示する方法を見つけました(例: git show [email protected]{0}^3https://stackoverflow.com/a/12681856/338986

EDIT2: git stash saveは非推奨になり、 pushが優先されます。 @ script-wolfに感謝します。

Oscar Fraxedas picture
2013年11月25日
127

これは私がいつも使っているものです:

git clean -fdx

非常に大規模なプロジェクトの場合は、数回実行することをお勧めします。

Espo picture
2008年09月14日
94

git-cleanはあなたが探しているものです。 追跡されていないファイルを作業ツリーから削除するために使用されます。

Vijay C picture
2013年09月24日
88

特定のサブディレクトリから追跡されていないファイルを削除する必要がある場合は、

git clean -f {dir_path}

そして、追跡されていないdir / filesと無視されたファイルを削除するための組み合わせた方法。

git clean -fxd {dir_path}

この後、 git statusのみファイルを変更します。