我正在使用这个简单的 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