我有一个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 rm $(git ls-files --deleted)

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

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

请使用-t查看实际正在运行的命令

我只是调整了Virender的答案来做同样的事情:

git ls-files --deleted -z | xargs -t -0 git rm
git rm test.txt

在您删除实际文件之前或之后。

迄今为止我发现的最灵活的解决办法是

git cola

然后选择我想要执行的所有已删除文件。

(注意,我通常在git中执行命令行,但git处理删除的文件有点尴尬)。

我也需要 并且使用了git GUI的“换台”按钮。 它还添加了all。

在“换台”之后,我做了“提交”…

这样我的工作目录又干净了。