7568

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

4

41 に答える 41

9364

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

あらすじ

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

説明

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

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

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


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

# 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

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

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

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


オプション

-f--force

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

-x

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

-X

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

-n--dry-run

実際には何も削除せず、何が行われるかを示すだけです。

-d

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

于 2008-09-15T17:32:55.957 に答える
534

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

git clean -i

これはインタラクティブの略で、影響を受けるファイルを含めたり除外したりする可能性を提供して、削除されるものの概要をすばやく取得します。全体として、--dry-run実際のクリーニングの前に必須を実行するよりもまだ高速です。

-d空のフォルダーも処理したい場合は、を投げる必要があります。最後に、素敵なエイリアスになります。

git iclean

そうは言っても、インタラクティブなコマンドを余分に手に持つことは、経験豊富なユーザーにとっては疲れる可能性があります. 最近は、すでに述べたものを使用していますgit clean -fd

于 2013-12-30T20:12:58.077 に答える
412

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

于 2008-09-14T09:09:25.130 に答える
336

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

追跡されていないすべてのファイルを削除するには、最初にそれらすべてを追加し、以下のようにリポジトリをリセットするのが簡単な方法です

git add --all
git reset --hard HEAD

于 2016-06-03T12:16:30.473 に答える
281

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

git clean -d -f -f

于 2013-01-25T12:24:01.047 に答える
153

git stash push -uですべて元に戻せるので気に入っていますgit stash pop

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

EDIT2:git stash saveを支持して非推奨ですpush。ありがとう@script-wolf。

于 2014-01-11T00:41:36.883 に答える
147

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

git clean -fdx

非常に大規模なプロジェクトの場合、数回実行する必要がある場合があります。

于 2013-11-25T14:16:12.260 に答える
103

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

于 2008-09-14T09:08:00.453 に答える
95

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

git clean -f {dir_path}

また、追跡されていないディレクトリ/ファイルと無視されたファイルを削除する方法を組み合わせました。

git clean -fxd {dir_path}

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

于 2013-09-24T06:28:30.040 に答える
66

git clean -fdディレクトリを削除します

git clean -fX無視されたファイルを削除します

git clean -fx無視されたファイルと無視されていないファイルを削除します

上記のすべてのオプションを次のように組み合わせて使用​​できます

git clean -fdXx

詳細については、git マニュアルを確認してください

于 2015-01-22T06:33:30.687 に答える
43

より良い方法は、次を使用することです: git clean

git clean -d -x -f

(-d)これにより、によって無視されるディレクトリやファイルなど、追跡されていないファイルが削除されgit (-x)ます。

また、-f引数をorに置き換えて対話モード-nを実行すると、何が削除されるかがわかります。dry-run-i

于 2015-04-16T06:49:13.810 に答える
23

私にとっては、以下のみが機能しました:

git clean -ffdx

他のすべてのケースでは、一部のサブディレクトリに対して「ディレクトリをスキップしています」というメッセージが表示されました。

于 2016-08-16T15:29:20.293 に答える
22

git clean -f -d -x $(git rev-parse --show-cdup)clean は、リポジトリ ディレクトリ ツリー内のどこで呼び出しても、ルート ディレクトリに適用されます。現在作業しているフォルダーを離れることを強制せず、現在の場所からすぐにクリーンアップしてコミットできるため、私は常にそれを使用しています。

フラグ-f-d-xがニーズに合っていることを確認してください。

-d
       Remove untracked directories in addition to untracked files. If an
       untracked directory is managed by a different Git repository, it is
       not removed by default. Use -f option twice if you really want to
       remove such a directory.

-f, --force
       If the Git configuration variable clean.requireForce is not set to
       false, git clean will refuse to delete files or directories unless
       given -f, -n or -i. Git will refuse to delete directories with .git
       sub directory or file unless a second -f is given. This affects
       also git submodules where the storage area of the removed submodule
       under .git/modules/ is not removed until -f is given twice.

-x
       Don't use the standard ignore rules read from .gitignore (per
       directory) and $GIT_DIR/info/exclude, but do still use the ignore
       rules given with -e options. This allows removing all untracked
       files, including build products. This can be used (possibly in
       conjunction with git reset) to create a pristine working directory
       to test a clean build.

他にも利用可能なフラグがあります。チェックしてくださいgit clean --help

于 2015-12-02T17:57:44.180 に答える
20

未追跡ファイルを削除するには:

git add .
git reset --hard HEAD
于 2020-05-20T16:05:48.853 に答える
19

「git status」によって追跡されていないとリストされているファイルを削除したいだけの場合

git stash save -u
git stash drop "stash@{0}"

「git clean」は git によって無視されたファイルを削除するため、「git clean」よりもこれを好みます。そのため、次のビルドではすべてを再構築する必要があり、IDE 設定も失われる可能性があります。

于 2016-03-02T02:09:47.497 に答える
13

git add --allgit stashおよびgit stash drop、追跡されていないファイルをすべて削除するには、これら 3 つのコマンドをこの順序で試してください。追跡されていないファイルをすべて git に追加してそれらをスタッシュすると、追跡されていないすべてのファイルがスタッシュ リストに移動し、一番上のファイルが削除されます。つまり、stash@{0} は、スタッシュされた変更をスタッシュ リストから削除します。

于 2021-04-14T20:18:35.747 に答える
9

以下の git コメントを使用して、現在の git 作業ツリーからローカルの追跡されていないファイルを簡単に削除できます。

git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

例:

git reset --hard HEAD

リンク :

  1. https://git-scm.com/docs/git-reset
  2. 「git reset --hard HEAD」を使用して以前のコミットに戻すにはどうすればよいですか?
  3. ローカル リポジトリ ブランチをリセットして、リモート リポジトリの HEAD と同じにする
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
于 2017-12-04T06:30:46.070 に答える
8

git リポジトリとすべてのサブモジュールを再帰的に消去する

次のコマンドは、現在の git リポジトリとそのすべてのサブモジュールを再帰的に消去します。

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
于 2017-09-25T16:25:54.417 に答える
0

git reset HEAD <file>ファイルのアンステージに使用

于 2017-08-08T02:02:34.410 に答える
0

使用法: git clean [-d] [-f] [-i] [-n] [-q] [-e] [-x | -バツ] [ - ] ...

-q, --quiet           do not print names of files removed
-n, --dry-run         dry run
-f, --force           force
-i, --interactive     interactive cleaning
-d                    remove whole directories
-e, --exclude <pattern>
                      add <pattern> to ignore rules
-x                    remove ignored files, too
-X                    remove only ignored files
于 2020-08-26T05:15:11.973 に答える