1357

私は使用から 4 つのファイルを削除した Git リポジトリを持っていますrm( not git rm )。私の Git ステータスは次のようになります。

#    deleted:    file1.txt
#    deleted:    file2.txt
#    deleted:    file3.txt
#    deleted:    file4.txt

これらのファイルを Git から削除するには、次のように各ファイルを手動で追加する必要はありません。

git rm file1 file2 file3 file4

git add .理想的には、可能であれば、同じように機能するものを探しています。

4

31 に答える 31

2341

Git 1.x の場合

$ git add -u

これにより、追跡されたファイルを自動的にステージングするように git に指示されます。これには、以前に追跡されたファイルの削除も含まれます。

Git 2.0 の場合

作業ツリー全体をステージングするには:

$ git add -u :/

現在のパスだけをステージングするには:

$ git add -u .
于 2009-09-10T00:13:25.730 に答える
1381
git ls-files --deleted -z | xargs -0 git rm 

あなたが探しているものかもしれません..それは私のために働く..

于 2011-02-28T20:21:49.430 に答える
744

使用できます

git add -u

削除されたファイルをステージング領域に追加してコミットするには

git commit -m "Deleted files manually"
于 2009-01-29T17:25:48.787 に答える
360

単に実行する場合:

git add -u

git はインデックスを更新して、削除したファイルが実際には次のコミットの一部であることを認識します。次に、「git commit」を実行して、その変更をチェックインできます。

または、実行した場合:

git commit -a

これらの変更 (およびその他の変更) が自動的に取得され、コミットされます。

更新:削除されたファイルのみを追加する場合は、次を試してください。

git ls-files --deleted -z | xargs -0 git rm
git commit
于 2009-09-10T00:15:12.293 に答える
169

あなたはおそらく -A を探しています:

git add -A

これは git add -u に似ていますが、新しいファイルも追加します。これは hg のaddremoveコマンドとほぼ同じです (移動検出は自動ですが)。

于 2009-01-29T18:10:14.173 に答える
95

削除されたファイルのみをステージングするには:

for x in $(git status | grep deleted | awk '{print $2}'); do git rm $x; done

または(xargsの方法):

git status | awk '/deleted/ {print $2}' | xargs git rm

後で便利に使用できるように、好みのコマンドセットにエイリアスを付けることができます。

于 2011-11-26T10:34:06.133 に答える
64
git rm test.txt

実際のファイルを削除する前または削除した後。

于 2009-09-10T00:13:29.777 に答える
50

「--all」または「--update」オプションを指定して git-add を使用すると、必要以上の結果が得られる場合があります。新しいファイルや変更されたファイルもインデックスに追加されます。削除したファイルを他のファイルに触れずに git から削除したい場合に備えて、bash エイリアスを設定しています。

alias grma='git ls-files --deleted -z | xargs -0 git rm'

ファイル システムから削除されたすべてのファイルは、削除済みとしてインデックスに追加されます。

于 2009-01-31T04:50:22.773 に答える
41

それは本当に重要なことではありませんが、選択した答えには同意しません:

git add -u 

...作業ツリー内の対応するファイルが削除されている場合、インデックスからファイルを削除しますが、追跡されたファイルの変更された新しいコンテンツもステージングします。

git rm $(git ls-files --deleted)

... 一方、追跡された削除済みファイルのみを rm します。

したがって、私の見解では後者がより良い選択肢です。

于 2012-04-09T11:24:42.170 に答える
31

それらが唯一の変更である場合は、簡単に行うことができます

git commit -a

すべての変更をコミットします。これには、削除されたファイルが含まれます。

于 2009-01-29T17:29:39.853 に答える
21
git ls-files --deleted | xargs git rm 

は、削除されたファイルのみを追加する最適なオプションです。

ここにいくつかの他のオプションがあります。

git add .  => Add all (tracked and modified)/new files in the working tree.

git add -u => Add all modified/removed files which are tracked.

git add -A => Add all (tracked and modified)/(tracked and removed)/new files in the working tree.

git commit -a -m "commit message" - Add and commit modified/removed files which are tracked.
于 2012-10-01T19:36:48.733 に答える
14

その簡単な解決策は私にとってはうまくいきます:

git rm $(git ls-files --deleted)
于 2015-11-06T13:32:13.260 に答える
11

追加したい場合は、次のようにします.gitconfig

[alias]
  rma = !git ls-files --deleted -z | xargs -0 git rm

次に、実行するだけです。

git rma
于 2012-07-25T20:47:58.067 に答える
9
git ls-files --deleted -z | xargs -0 git rm --cached

これにより、以前に git によって追跡されたすべての削除済みファイルが削除され、ファイル名にスペースが含まれている場合も処理されます。

POSIX バリアントによっては、 を使用する必要がある場合がありますxargs -0 -r。これによりxargs、null コンテンツがパイプ処理されたときに正常に終了します。

編集:--cachedおよび--deletedフラグは、まだ削除されていないファイルを誤って削除することを防ぐためにタンデムで使用されます。

于 2014-01-04T20:34:56.423 に答える
7

変更および削除されたファイルを自動的にステージングするようにコマンドに指示しますが、Git に伝えていない新しいファイルは影響を受けません。

-a
--all

git add . && git commit -m -a "Your commit"

また

git add --all && git commit -m "Your commit"
于 2015-03-09T15:05:17.987 に答える
6

述べたように

git add -u

削除されたファイルを削除のためにステージングしますが、更新のためにファイルも変更します。

変更されたファイルのステージングを解除するには、次のことができます

git reset HEAD <path>

コミットを整理してクリーンに保ちたい場合。
注:これにより、削除されたファイルのステージが解除される可能性もあるため、これらのワイルドカードには注意してください。

于 2012-02-21T18:43:33.530 に答える
6

-t実際にどのコマンドが実行されているかを確認するために使用してください

同じことをするためにVirenderの回答を微調整しました:

git ls-files --deleted -z | xargs -t -0 git rm
于 2016-04-17T15:00:07.647 に答える
6

処理するファイルがたくさんある場合でも、次のように動作します。

git ls-files --deleted | xargs git rm

おそらく、コメントを付けてコミットすることもできます。

詳細については、「 便利な Git スクリプト」を参照してください。

于 2013-05-24T13:45:17.003 に答える
5

git-add のフラグは、削除されたファイルのみをステージングするものではありません。変更したのが削除されたファイルだけであれば問題ありませんが、それ以外の場合は git-status を実行して出力を解析する必要があります。

ジェレミーの答えに取り組んで、これは私が得たものです:

git status |  sed -s "s/^.*deleted: //" | grep "\(\#\|commit\)" -v | xargs git rm
  1. ファイルのステータスを取得します。
  2. 削除されたファイルの場合は、ファイルの名前を分離します。
  3. #s で始まるすべての行と、「deleted」という単語が含まれるステータス行を削除します。正確には何だったのか覚えていません。また、もう存在しないため、さまざまな状況でこれを変更する必要がある場合があります。式のグループ化は GNU 固有の機能かもしれないと思うので、gnutils を使用していない場合は、複数のgrep -v行を追加する必要があるかもしれません。
  4. ファイルを に渡しますgit rm

これをシェルエイリアスに貼り付けます...

于 2009-07-25T23:41:05.943 に答える
4
git commit -m 'commit msg' $(git ls-files --deleted)

ファイルをすでに削除した後、これはうまくいきました。

于 2014-08-05T14:40:38.460 に答える
3

同じものが必要で、gitguiの「ステージ変更」ボタンを使用しました。また、すべてを追加します。

そして「ステージチェンジ」後「コミット」しました…

だから私の作業ディレクトリは再びきれいになりました。

于 2011-11-15T14:29:42.397 に答える
3

git add -u <filenames>削除されたファイルのステージングにのみ使用できます。

たとえば、ファイルを削除した場合templates/*.tplは、を使用しますgit add -u templates/*.tpl

-u、リポジトリには存在するが作業ディレクトリには存在しないファイルを参照するために必要です。それ以外の場合、のデフォルトはgit add作業ディレクトリ内のファイルを検索することであり、そこで削除したファイルを指定すると、それらは検索されません。

于 2013-03-07T01:29:28.253 に答える
2

(さらに別のバリエーション)

既に削除されているディスク ファイルをすべて削除したかったのですが、特定の 1 つのフォルダーから削除し、他のフォルダーはそのままにしました。以下は私のために働いた:

git ls-files --deleted  | grep <folder-name> | xargs git rm
于 2016-11-23T10:32:10.720 に答える
1

何かのようなもの

git status | sed -s "s/^.*deleted: //" | xargs git rm 

するかもしれません。

于 2009-01-29T17:28:52.820 に答える
-1

私がこれまでに見つけた最も柔軟な解決策は

git cola

そして、ステージングしたいすべての削除されたファイルを選択します。

(私は通常、すべてのコマンドラインをgitで実行しますが、gitは削除されたファイルを少し扱いに​​くいことに注意してください)。

于 2012-10-03T14:28:18.240 に答える