我有一个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 -z | xargs -0 git rm --cached

这将删除所有之前被git跟踪的已删除文件,以及处理文件名中有空格的情况。

根据POSIX变量的不同,您可能需要使用xargs -0 -r:这将导致xargs在管道输出空内容时优雅地退出。

EDIT:——cached和——deleted标志一起使用,以防止意外删除尚未删除的文件。

其他回答

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 ls-files --deleted -z | xargs -0 git rm 

也许这就是你正在寻找的。这对我有用。

如果你简单地运行:

git add -u

Git将更新它的索引,以知道您已经删除的文件实际上应该是下一次提交的一部分。然后你可以运行“git commit”来检入这个更改。

或者,如果你运行:

git commit -a

它将自动接受这些更改(以及任何其他更改)并提交它们。

更新:如果您只想添加已删除的文件,请尝试:

git ls-files --deleted -z | xargs -0 git rm
git commit

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

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

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

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