使用 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 答案相同,但增加了一点变化:
在命令末尾添加--all将ls-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
)。
有时候更容易记住。
我有 运行 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
所有的爱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
)。
有时候更容易记住。