連携 どのように現在のGitの作業ツリーからローカル(untracked)ファイルを削除するには?




github インストール (24)

git docsから未追跡のファイル削除するためのuggestedコマンドは、 git cleanです。

git clean - 作業していないファイルを作業ツリーから削除する

提案された方法: git clean -iを使用して制御することができるように、Interativeモードを使用します。 残りの利用可能なオプションを見てみましょう。

利用可能なオプション:

git clean 
    -d -f -i -n -q -e -x -X (can use either)

説明:

1. -d

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

2. -f、--force

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

3. -i、--interactive

何が行われ、対話形式でファイルをクリーンにするかを示します。 詳細は、「対話モード」を参照してください。

4. -n、--dry-run

実際に何かを削除しないでください。何が行われるのかを示してください。

-q、--quiet

静かで、エラーのみを報告するが、正常に削除されたファイルは報告しない。

6. -e、--exclude =

.gitignore(ディレクトリごと)と$ GIT_DIR / info / excludeにあるものに加えて、これらのパターンは実際に無視ルールのセットにあると考えてください。

7. -x

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

8. -X

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

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


より良い方法はgit cleanです。

git clean -d -x -f

これは、ディレクトリ(-d)git (-x)無視されるファイルを含む、追跡されていないファイルを削除します。

また、 -f引き数を-nと置き換えて、 dry-runまたは-iを対話モードでdry-runすると、削除される内容が示されます。


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

git clean -f {dir_path}

また、統合されていないdir /ファイルと無視されたファイルを削除する方法。

git clean -fxd {dir_path}

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


OK、 不要なuntrackedファイルやフォルダを削除するのはコマンドラインでgitを使うのが簡単ですが、次のようにしてください:

git clean -fd

履歴を作成せずにファイルとフォルダを削除するので、それを行う前にダブルチェック ...

この場合も、 -fはforceを表し、 -dはdirectoryを表します...

したがって、ファイルのみを削除する場合は、 -fのみを使用できます。

git clean -f

(ディレクトリ)とファイルを削除したい場合は、以下のように、未追跡のディレクトリとファイルだけを削除することができます:

git clean -fd

また、gitで無視されるファイルを含めるために-xフラグを使用することもできます。 これは、すべてを削除したい場合に役立ちます。

-iフラグを追加すると、gitは、外出先でファイルを1つずつ削除する権限を要求します。

不明な点を確認したい場合は、まず-nフラグを付けてください。

削除が成功した後にレポートを表示したくない場合は、 -q使用します。

私はまた、以下のイメージを作成して、もっと記憶に残すようにしました。特に、フォルダを時々掃除したり、何とかミックスしたりすることを多くの人が混乱させていました。



これは私がいつも使うものです:

git clean -fdx

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


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

git clean -d -f -f


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

git clean -i

これはインタラクティブであり、影響を受けるファイルを含める/除外する可能性を提供する、削除される予定のものの概要を簡単に表示します。 全体的に、実際のクリーニングの前に強制--dry-runするよりもまだ高速です。

あなたが空のフォルダを世話したい場合は、 -d使う必要があります。 最後に、それはいいエイリアスになります:

git iclean

つまり、インタラクティブコマンドの余分な手持ちは、経験豊富なユーザーにとっては疲れることがあります。 最近、私はすでに述べたgit clean -fd


私はここで最も一般的な回答を使用して失敗した - gitは、とにかくリポジトリからuntrackedファイルを削除しません。 理由は分かりません。 これは特別なGITコマンドを使わないで私の超簡単な答えです!

ミッション:未追跡のファイルをgitリポジトリから削除する:

  1. ローカルのプロジェクトフォルダから別の場所にファイルやフォルダを移動する
  2. コミットのためにこれらのファイルとフォルダについて.gitignoreのすべての行を削除する
  3. Gitを追加します。
  4. Git commit -m "追跡されていないファイルからのリポジトリのクリーニング"
  5. ギットプッシュ

すべてのファイルとフォルダがリポジトリから削除されました。

必要に応じて、localhostで復元します。

  1. 一時的に移動したすべてのファイルとフォルダをローカルプロジェクトフォルダに再度移動する
  2. これらのファイルとフォルダに関するすべての行を.gitignoreに戻します。
  3. Gitを追加します。
  4. Git commit -m "gitリポジトリにチェックやファイルが再表示されない"
  5. ギットプッシュ

あなたは終わった!


私はgit stash push -uが好きです。なぜならgit stash popそれらを元に戻すことができるからです。

編集:また、私は隠されたファイルを表示する方法を見つけた(例: git show [email protected]{0}^3 ) https://.com/a/12681856/338986

EDIT2: git stash savepushを優先して廃止されました。 ありがとう@ script-wolf。


通常のgit cleanコマンドでは、 git version 2.9.0.windows.1で未追跡のファイルは削除されません。

$ git clean -fdx     # doesn't remove untracked files
$ git clean -fdx *   # Append star then it works!

`git clean`コマンドを実行しているときは注意してください。

実際のコマンドを実行する前に、 常にどのファイルが削除されるかを示す-n 使用してください。

git clean -n -d 
git clean -f -d

デフォルトでは、 git cleanは、無視されないuntrackedファイルのみを削除します。 .gitignoreや他のファイルを無視するパターンに一致するファイルは削除されません。 それらのファイルも削除したい場合は、 -xをcleanコマンドに追加することができます。

git clean -f -d -x

また、cleanコマンドで-iを使用できる対話モードもあります

git clean -x -i

あるいは

コミットされていない作業の削除が安全であることを100%確信していない場合は、代わりにstashingを使用できます

git stash --all

また、ディレクトリをクリアしますが、 適用またはポップで 隠すことで、いつでもファイルを取り出すことができます。 その後、あなたはあなたの隠しをクリアすることができます:

git stash drop // or clean

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チェックしてください。


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

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

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

上記のすべてのオプションを組み合わせて使用​​することができます

git clean -fdXx

より多くの助けのためにgitマニュアルをチェックしてください


このrepo +サブモジュール内のすべての余分なフォルダとファイルを削除

これは新鮮なクローンと同じ状態になります。

git clean -ffdx

このリポジトリ内の余分なフォルダとファイルはすべて削除しますが、サブモジュールは削除しないでください

git clean -fdx

余分なフォルダのみを削除しますが、ファイルは削除しないでください(ビルドフォルダなど)

git clean -fd

余分なフォルダ+無視されたファイルを削除します(しかし、新しく追加されたファイルは削除しません)

ファイルが無視されず、まだチェックインされていない場合、それはそのままです。 大文字のXに注意してください。

git clean -fdX

新しいインタラクティブモード

git clean

私のために働いただけ:

git clean -ffdx

他のすべてのケースでは、私はいくつかのサブディレクトリに対して"Skipping Directory"というメッセージを受け取りました


ユーザー対話型アプローチ:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/arsdumpgenerator/s3/ [y/N]? y

インタラクティブな-i
-f for force
ディレクトリの-d
無視されたファイルの場合は-x(必要に応じて追加)

注: -nまたは--dry-runを追加するだけで、それが何をするかを調べることができます。


以下のgitコメントを使って、現行のgitワーキングツリーからローカルのuntrackedファイルを簡単に削除できます。

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

Git Documentation git cleanによると

動作していないファイルを作業ツリーから削除する

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

git clean -n

クリーンステップ - 注意:ファイルを削除します

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

- 力

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

-バツ

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

-バツ

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

-n

--dry-run

実際に何かを削除しないでください。何が行われるのかを示してください。

-d

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


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

すべての未追跡のファイルを削除するには、簡単な方法は、 最初にすべて追加し、以下のようにrepoリセットすることです

git add --all
git reset --hard HEAD

git clean -f -dを使ってディレクトリも削除されていることを確認してください。

git statusファイルが本当になくなっているかどうかを確認できgit status


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


実際に削除する前に削除する内容を知るには:

git clean -d -n

次のような出力が得られます:

sample.txtを削除しますか?

前のコマンドの出力にリストされているすべてを削除するには:

git clean -d -f

次のような出力が得られます:

sample.txtの削除


私はちょうど発明して試した(完璧に動作する)このような状況のためのライフハック:

git add .
git reset --hard HEAD

注意してください! これを実行する前に 、(untrackedでないファイルでも) 必要な変更コミットするようにしてください。


zshを使ったoh-my-zshはgitプラグインを介してそれらの素晴らしいエイリアスを提供します。 それらもbashで使うことができます。

gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'

  • gclean は、追跡されていないファイルに加えて、追跡されていないディレクトリも削除します
  • gpristineはローカルの変更をハードリセットし、 gpristine追跡のディレクトリ、 追跡のファイルを削除し、.gitignore(ディレクトリ単位)と$ GIT_DIR / info / excludeから読み込まれた標準無視ルールは使用しませんが、-eオプション。 これにより、ビルドされた製品を含め、すべての未追跡のファイルを削除できます。 これは、きれいなビルドをテストするための初期の作業ディレクトリを作成するためにgit resetと組み合わせて使うことができます




git-branch