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

rok*_*rok 17 git

我已经运行git status并查看了几个已修改的文件和几个已删除的文件.是否可以仅删除已删除或仅修改的文件?

Ste*_*eve 37

如果您混合使用已修改和已删除的文件,并且只想将已删除的文件暂存到索引,则可以将其git ls-files用作过滤器.

git ls-files --deleted | xargs git add
Run Code Online (Sandbox Code Playgroud)

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

git ls-files --deleted -- lib/foo | xargs git add
Run Code Online (Sandbox Code Playgroud)

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

  • 如果删除文件的名称包含空格,则应将参数`-d "\n"` 传递给 xargs。 (4认同)
  • 您也可以使用`git ls-files -z --deleted | xargs -0 git add`用于具有特殊字符(甚至换行符)的文件名。 (2认同)

小智 9

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

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

git ls-files --deleted | xargs git add --all
Run Code Online (Sandbox Code Playgroud)


pav*_*taj 9

对于 PowerShell

git ls-files --deleted | % {git add $_}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ger 5

ls-files在我看来,所有的爱都已来到这里

git add --all $(git diff --diff-filter=D --name-only)
Run Code Online (Sandbox Code Playgroud)

更简单。