假设我运行 git status 并已删除,修改和其他更改。
如何仅暂存已删除的文件?
我尝试了this post中的答案:
git ls文件-已删除| xargs git add
但这在Windows下似乎不起作用。
答案 0 :(得分:1)
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.cmd
),然后运行生成的脚本(rm-deleted.cmd
)来实现您的目标。然后可以删除脚本(del rm-deleted.cmd
);它不是可重复使用的通用工具,而只是一种一次性脚本,可从索引中删除某些文件列表。
详细了解git diff
的参数。
我手头没有Windows实例,也不知道Git如何处理名称中包含空格的文件。我怀疑此脚本无法在此类文件上运行。如果您的文件或目录的名称中包含空格,则应将生成的脚本打开到编程编辑器中,将所有出现的git rm
替换为git rm "
,并在每个变量之后添加引号("
)行(您需要编程编辑器才能搜索和替换行尾)。
通过将文件名括在引号中,Windows命令提示符将其正确传递给git rm
,Git能够识别文件并将其从索引中删除。