git rm --cached 结果是致命的:路径规范



我想在向.gitignore添加一些文件后清理我的存储库,所以我运行了 git rm --cached *结果:
fatal: pathspec '$Recycle.Bin' did not match any files

我认为这是由于文件名中的$,是否有解决方法?

这就是*的工作方式。 它与$完全无关。

$ ls
$Recycle.Bin
a
b

如果我运行git rm --cached *,shell 会将其转换为 git rm --cached $Recycle.bin a b ,这就是传递给 Git 的内容。

但是,$Recycle.Bin不是存储库的一部分,因此 Git 无法删除它。 这是一个错误。 解决此问题的最简单方法是不使用 --ignore-unmatch .

$ git rm --cached --ignore-unmatch -- *

解决方法是将"*"替换为更多有界通配符/glob。例如,您可以使用 mydir/{dir1,dir2}/* 的形式。{js,css}

这应该让你对你能做什么有所了解。

然后查看您对 .gitignore 的更改,并在每行条目上执行 git rm --cached,使用通配符组合条目,以防您的 gitignore 臃肿

最新更新