我有一个Git repo,我用rm(不是Git rm)删除了四个文件,我的Git状态是这样的:

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

我如何从Git中删除这些文件,而不需要手动查看并添加每个文件,就像这样:

git rm file1 file2 file3 file4

理想情况下,我正在寻找与git添加的方式相同的东西。是的,如果可能的话。


当前回答

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.

其他回答

正如前面提到的

git add -u

阶段删除文件删除,但也修改文件更新。

要取消已修改的文件,您可以执行

git reset HEAD <path>

如果你想保持你的提交有条理和干净。注意:这也可能取消已删除的文件,所以要小心那些通配符。

你可能在找-A:

git add -A

这类似于git add -u,但也添加新文件。这大致相当于hg的addremove命令(尽管移动检测是自动的)。

并不是说这真的很重要,但我不同意选择的答案:

git add -u 

... 如果工作树中的相应文件已被删除,则将从索引中删除文件,但它也将执行已修改的跟踪文件的新内容。

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

... 另一方面,将只rm已删除的文件被跟踪。

所以在我看来后者是更好的选择。

(另一种变化)

我想删除所有已经删除的磁盘文件,但从一个特定的文件夹,留下其他文件夹不变。下面的方法对我很有效:

git ls-files --deleted  | grep <folder-name> | xargs git rm

你可以使用

git add -u

要将删除的文件添加到暂存区域,然后提交它们

git commit -m "Deleted files manually"