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

How do I stage only deleted files in Git for Windows?

假设我运行gitstatus并且有删除、修改等变化

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

我试过中的答案:

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

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

Windows 没有提供 xargs 命令,这使得大多数关于如何解决这个问题的建议都变得毫无用处,包括 git add or git rm 的文档页面中提供的建议。

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

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

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

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

详细了解 git diff 的论点。


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

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