如何在 Git for Windows 中仅暂存已删除的文件?
Posted
技术标签:
【中文标题】如何在 Git for Windows 中仅暂存已删除的文件?【英文标题】:How do I stage only deleted files in Git for Windows? 【发布时间】:2018-12-18 13:57:49 【问题描述】:假设我运行 git status 并进行了删除、修改和其他更改。
如何只暂存已删除的文件?
我已经尝试过this post中的答案:
git ls-files --deleted | xargs git add
但这似乎在 windows 下不起作用。
【问题讨论】:
Stage only deleted files with git add的可能重复 【参考方案1】:Windows 不提供xargs
命令,这使得大多数关于如何解决此问题的建议毫无用处,包括在git add
或git rm
的文档页面中提供的建议。
但是git rm
的文档建议使用一个命令来生成可以解决此问题的命令列表。命令是:
git diff --name-only --diff-filter=D --line-prefix="git rm "
它生成从工作树中删除的文件列表,每行一个文件,并在每个文件名前加上 git rm
。
按原样运行并检查其输出后,您可以通过将> rm-deleted.cmd
附加到命令行,将其输出重定向到.cmd
文件(比如说rm-deleted.cmd
),然后运行生成的脚本(@987654333 @) 来实现你的目标。然后您可以删除脚本 (del rm-deleted.cmd
);它不是一个可重复使用的通用工具,而只是一个从索引中删除某个文件列表的一次性脚本。
详细了解git diff
的论点。
我手头没有 Windows 实例,也不知道 Git 如何处理名称中包含空格的文件。我怀疑此脚本无法对此类文件进行操作。如果您的文件或目录名称中包含空格,则应将生成的脚本打开到编程编辑器中,将所有出现的 git rm
替换为 git rm "
并在每行后附加引号 ("
)(您需要编程编辑器能够搜索和替换行尾)。
通过将文件名括在引号中,Windows 命令提示符将它们正确地传递给git rm
,Git 能够识别文件并将它们从索引中删除。
【讨论】:
以上是关于如何在 Git for Windows 中仅暂存已删除的文件?的主要内容,如果未能解决你的问题,请参考以下文章