コマンドラインからGitを使用している場合、変更済みで更新されていないリストで削除するすべてのファイルを一挙に削除する方法はありますか?ワイルドカードを使用して手動で削除するのではなく。
3 に答える
以下は、削除されたかどうかに関係なく、すべてのファイルをインデックスにステージングする必要があります。
git add -A
変更済みで更新されていないファイルは、すでにインデックスに登録されています。を使用して変更を破棄できます。git checkout .
新しいが、使用できるインデックスに追加されていないファイルを削除するにはgit clean
。
しかし、変更されてインデックスにあるファイルを削除するには...簡単な解決策はありません。おそらく、との組み合わせを使用する必要がgit rm
ありgit ls-files
ます。
編集:
git ls-files -m
あなたが探しているファイルをリストする必要があります。それを組み合わせると、git rm
完了です。
git-ls files -m | xargs git rm // NOT TESTED
編集:
私はおそらくあなたの質問の一部を誤解しました。私のソリューションでは、[変更されたが更新されていない]の下にリストされているすべてのファイルが削除されます。削除済みとしてリストされているファイルを削除する場合はgit diff
、CharlesBaileyが回答に示しているように使用する必要があります。
ステータスの「変更されたが更新されていない」セクションで削除済みとして表示されたファイルは、作業ツリーから削除されますが、インデックスからは削除されません。インデックスで削除をステージングする(つまり、インデックスからファイルを削除する)には、次の操作を実行できます。
git diff -z --name-only --diff-filter=D | git update-index --remove -z --stdin
--diff-filter=D
削除されたファイルであるインデックスとの違いのみを--name-only
表示し、名前を出力し、-z
NULを使用してファイル名を区切るため、改行が埋め込まれたファイル名について心配する必要はありません。update-index
次に、指定されたファイルをインデックスから削除します。
xargs
そのサポートのバージョンがある場合-0
は、少し簡単に行うことができます。
git diff -z --name-only --diff-filter=D | xargs -0 git rm