7

如果您从命令行使用 Git,有没有办法一举删除已更改但未更新列表中所有要删除的文件?而不是使用通配符进行手动删除。

4

3 回答 3

8

以下内容应在索引中暂存所有文件,无论是否已删除:

git add -A
于 2012-02-07T20:02:16.497 回答
4

好吧,已更改但未更新下列出的文件已经在索引中。您可以使用git checkout .
To remove file that are new 但尚未添加到您可以使用的索引来放弃他们的更改git clean
但是对于删除已修改并在索引中的文件......好吧,没有简单的解决方案,您可能必须使用git rm和的组合git ls-files

编辑:
git ls-files -m应该列出您正在寻找的文件。结合它,git rm你就完成了:

git-ls files -m | xargs git rm // NOT TESTED

编辑:
我可能误解了你问题的一部分。我的解决方案将删除Changed but not updated下列出的所有文件。如果要删除列为已删除的文件则必须使用git diffCharles Bailey 在他的回答中显示的内容。

于 2010-04-19T15:41:53.147 回答
3

Files shown as deleted in the "Changed but not updated" section of status are deleted from the work tree but not from the index. To stage the deletion in the index (i.e. remove the file from the index) you can do:

git diff -z --name-only --diff-filter=D | git update-index --remove -z --stdin

--diff-filter=D shows only the differences to the index that are deleted files, --name-only just prints their name and -z uses NUL to separate file names so that you don't have to worry about filenames with embedded newlines. update-index then removes the given files from the index.

If you have a version of xargs that supports -0 then you could do the slightly simpler:

git diff -z --name-only --diff-filter=D | xargs -0 git rm
于 2010-04-19T15:57:19.037 回答