567

gitリポジトリに。という名前のファイルがあるとしますfoo

rm(ではなく)で削除されたとしgit rmます。次に、gitstatusは次のように表示されます。

Changes not staged for commit:

    deleted: foo

この個々のファイルの削除をステージングするにはどうすればよいですか?

私が試してみると:

git add foo

それは言う:

'foo' did not match any files.

更新(9年後、笑):

これは、git2.xで修正されたようです。

$ git --version
git version 2.25.1

$ mkdir repo

$ cd repo

$ git init .
Initialized empty Git repository in repo/.git/

$ touch foo bar baz

$ git add foo bar baz

$ git commit -m "initial commit"
[master (root-commit) 79c736b] initial commit
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bar
create mode 100644 baz
create mode 100644 foo

$ rm foo

$ git status
On branch master
Changes not staged for commit:
    deleted: foo

$ git add foo

$ git status
On branch master
Changes to be committed:
    deleted:    foo
4

10 に答える 10

563

git rm foo削除のためにファイルをステージングするために使用します。(これにより、ファイルが以前に削除されていない場合は、ファイルシステムからも削除されます。もちろん、以前にチェックインされているため、gitから復元できます。)

ファイルシステムからファイルを削除せずにファイルをステージングして削除するには、次のコマンドを使用します。git rm --cached foo

于 2012-09-11T16:02:24.133 に答える
452

を使用するのは正しいgit rm [FILE]ですが、代わりに を使用することもできますgit add -u

ドキュメントによるとgit-add

-u --更新

[FILE] に一致するエントリが既にあるインデックスを更新します。これにより、作業ツリーに一致するようにインデックス エントリが削除および変更されますが、新しいファイルは追加されません。

-u オプションが使用されているときに [FILE] が指定されていない場合、作業ツリー全体で追跡されているすべてのファイルが更新されます (Git の古いバージョンでは、更新を現在のディレクトリとそのサブディレクトリに制限するために使用されていました)。

インデックスが更新され、ファイルが適切にステージングされます。

于 2012-09-11T16:36:45.327 に答える
187

手動で削除されたすべてのファイルをステージングするには、次を使用できます。

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

このコマンドに としてエイリアスを追加するには、次をgit rm-deleted実行します。

git config --global alias.rm-deleted '!git rm $(git ls-files --deleted)'
于 2015-12-24T16:26:51.360 に答える
4

削除されたすべてのファイルをステージに追加するだけの場合は、次を使用できますgit add .

これは、現在 git を使用する最も簡単な方法v2.27.0です。*との使用.は異なるアプローチであることに注意してください。を使用git add *すると、現在存在するファイルのみが追加されますが、コマンドgit add .で削除されたファイルもステージングされますrm

当然のことながら、変更された他のファイルも .xml を使用するとステージング領域に追加されることに注意してくださいgit add .

于 2021-02-09T19:55:12.623 に答える