如何在Windows版Git中仅暂存已删除的文件?

时间:2018-07-10 16:16:12

标签: git git-for-windows

假设我运行 git status 并已删除,修改和其他更改。

如何仅暂存已删除的文件?

我尝试了this post中的答案:

git ls文件-已删除| xargs git add

但这在Windows下似乎不起作用。

1 个答案:

答案 0 :(得分:1)

Windows不提供xargs命令,这使有关如何解决此问题的大多数建议无用,包括git addgit rm的文档页面中提供的那些建议。

但是git rm的文档中建议了一个命令,该命令可用于生成可以解决此问题的命令列表。命令是:

git diff --name-only --diff-filter=D --line-prefix="git rm "

它会生成从工作树中删除的文件的列表,每行一个文件,并在每个文件名前加上git rm

按原样运行并检查其输出后,可以通过在命令行后附加.cmd来将其输出重定向到rm-deleted.cmd文件(例如> rm-deleted.cmd),然后运行生成的脚本(rm-deleted.cmd)来实现您的目标。然后可以删除脚本(del rm-deleted.cmd);它不是可重复使用的通用工具,而只是一种一次性脚本,可从索引中删除某些文件列表。

详细了解git diff的参数。


我手头没有Windows实例,也不知道Git如何处理名称中包含空格的文件。我怀疑此脚本无法在此类文件上运行。如果您的文件或目录的名称中包含空格,则应将生成的脚本打开到编程编辑器中,将所有出现的git rm替换为git rm ",并在每个变量之后添加引号(")行(您需要编程编辑器才能搜索和替换行尾)。

通过将文件名括在引号中,Windows命令提示符将其正确传递给git rm,Git能够识别文件并将其从索引中删除。