1

假设我运行git status并进行了删除、修改和其他更改。

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

我已经在这篇文章中尝试过答案:

git ls-files --deleted | xargs 混帐添加

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

4

1 回答 1

2

Windows 不提供该xargs命令,这使得关于如何解决此问题的大多数建议都毫无用处,包括在git add或的文档页面中提供的建议git rm

但是文档git rm建议使用一个命令来生成可以解决此问题的命令列表。命令是:

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

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

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

阅读更多关于git diff.


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

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

于 2018-07-10T16:48:58.687 回答