我已经运行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答案相同,但添加了一些更改:
在命令末尾添加--all ,将ls-files命令返回的所有文件添加到索引中
git ls-files --deleted | xargs git add --all
对于 PowerShell
git ls-files --deleted | % {git add $_}
因为所有的爱ls-files
都来了,在我看来
git add --all $(git diff --diff-filter=D --name-only)
更直接。
另一种方式:
git diff --name-only --diff-filter=D | sed 's| |\\ |g' | xargs git add
我sed
在这里使用是因为路径可能有空格字符。