我已经运行 git status 并查看了几个已修改的文件和几个已删除的文件。 是否可以仅暂存已删除或仅修改的文件?
答案 0 :(得分:26)
如果您混合使用已修改和已删除的文件,并且只想将已删除的文件暂存到索引,则可以使用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
)。
答案 1 :(得分:3)
与@steve答案相同,但有一点变化:
在命令末尾添加-all ,将 ls-files 命令返回的所有文件添加到存储中
git ls-files --deleted | xargs git add --all
答案 2 :(得分:1)
对于PowerShell
git ls-files --deleted | % {git add $_}
答案 3 :(得分:0)
在我看来,ls-files
的所有爱都在这里
git add $(git diff --diff-filter=D --name-only)
更直接。
答案 4 :(得分:0)
另一种方式:
git diff --name-only --diff-filter=D | sed 's| |\\ |g' | xargs git add
我在这里使用 sed
是因为路径可能包含空格字符。