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

删除git ls-files命令列出的所有文件(-d show only deleted files)。不适用于文件名或路径中有空格的文件,但易于记忆

其他回答

你可以使用

git add -u

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

git commit -m "Deleted files manually"

通过使用带有“——all”或“——update”选项的git-add,你可能会得到比你想要的更多的东西。新的和/或修改的文件也会被添加到索引中。我有一个bash别名设置,当我想从git中删除已删除的文件而不接触其他文件:

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

从文件系统中删除的所有文件都作为已删除文件添加到索引中。

你可能在找-A:

git add -A

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

即使你有很多文件要处理,下面的方法也可以:

git ls-files --deleted | xargs git rm

您可能还希望提交注释。

详细信息请参见:有用的Git脚本

只运行已删除的文件:

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

您可以为首选命令集添加别名,以便以后使用。