62

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

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

4

5 回答 5

101

如果您混合了已修改和已删除的文件,并且只想将已删除的文件暂存到索引中,则可以将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)。

于 2017-08-30T11:36:17.310 回答
9

@steve答案相同,但添加了一些更改:

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

git ls-files --deleted | xargs git add --all
于 2019-01-31T22:07:07.900 回答
4

对于 PowerShell

git ls-files --deleted | % {git add $_}
于 2020-07-16T10:46:21.763 回答
3

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

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

更直接。

于 2019-07-16T22:50:25.097 回答
0

另一种方式:

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

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

于 2021-08-11T03:11:53.990 回答