如何在git中仅从索引中删除意图添加的文件?

9
有没有一种方法可以使用单个命令从索引中删除仅使用-N标志添加的文件?
2个回答

4
不,Git不会跟踪使用-N添加的文件和空文件之间的区别。

这还是真的吗?在执行 git add -N 后,我可以在 git status 中看到一些文件是“新文件”,而其他文件则是“修改过的”。 - henrebotha

2
是的,有!只需使用git即可:
git diff --name-only --diff-filter=A -z \
    | git restore --staged -q --pathspec-file-nul --pathspec-from-file=-

使用-N添加的没有内容的文件在工作树中显示为“已添加” (A),并且在 --diff-filter=A 中列出。然后将此列表传输到 git restore 中,以删除添加意图。
我使用了 git restore,因为如果没有使用 -N 添加文件(因为空路径规范),则 git reset 将重置整个索引。您也可以通过...(未完待续)
git diff --name-only --diff-filter=A -z | xargs -r0 git reset -q --

需要使用GNU xargs。

这个命令的问题在于它会将你添加的所有文件都从待提交的更改中移除。 - Susensio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接