使用 git 添加仅暂存已删除的文件

Stage only deleted files with git add

我有 运行 git status 并看到几个修改过的文件和几个删除的文件。

是否可以仅暂存已删除或仅已修改的文件?

如果您同时拥有已修改和已删除的文件,并且只想将已删除的文件暂存到索引中,您可以使用 git ls-files 作为过滤器。

git ls-files --deleted | xargs git add

如果您只想将其应用于文件树的一部分,请将一个或多个子目录作为参数提供给 ls-files:

git ls-files --deleted -- lib/foo | xargs git add

要仅对修改后的文件执行相同操作,请使用 --modified (-m) 选项而不是 --deleted (-d)。

@steve 答案相同,但增加了一点变化:

在命令末尾添加--allls-files命令返回的所有文件添加到索引中

git ls-files --deleted | xargs git add --all

所有的爱ls-files 都来了,在我看来

git add --all $(git diff --diff-filter=D --name-only)

更直接。

对于 PowerShell

git ls-files --deleted | % {git add $_}

另一种方式:

git diff --name-only --diff-filter=D | sed 's| |\ |g' | xargs git add

我在这里使用 sed 因为路径可能有空格字符。

作为已接受答案的替代方法,您可以使用交互模式 git add -i,然后 select 2 更新您要暂存的文件并仅选择已删除的文件(例如,使用范围 1-30)。

有时候更容易记住。