Git-删除已删除的文件

Git-删除已删除的文件

我正在使用这个简单的 git 别名

    rmdel = "!git rm $(git ls-files -d)"

意思是“删除已删除”,即从暂存区中删除所有从文件系统中删除的文件。除非有任何文件包含空白,否则它工作正常。然后显然列表也会被分割,从而导致不存在文件的文件名。

我认为应该可以使用 IFS 来解决它,但 IFS 似乎在 cygwin 中不起作用,我怀疑类似的东西

    rmdel = "!IFS=' ' git rm $(git ls-files -d)"`

完全可以工作。还有更好的主意吗?

答案1

ls-files有一个为此目的设计的开关,-z

-z    \0 line termination on output.

xargs有一个开关,让您可以用空字符而不是空格分隔输入项,-0.将它们结合起来,你会得到:

$ git ls-files -dz | xargs -0 git rm

相关内容