如何仅暂存 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 能够识别文件并将它们从索引中删除。
假设我运行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 能够识别文件并将它们从索引中删除。