git rm --cached导致致命:pathspec

时间:2016-01-28 18:53:18

标签: git

我想在将一些文件添加到.gitignore之后清理我的仓库,所以我跑了 git rm --cached *结果:
fatal: pathspec '$Recycle.Bin' did not match any files

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

2 个答案:

答案 0 :(得分:4)

这就是*的工作原理。它与$毫无关系。

$ 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 -- *

答案 1 :(得分:0)

解决方法是用更有界的通配符/ globs替换'*'。例如,你可以使用mydir / {dir1,dir2} / *形式的东西。{js,css}

哪个可以让你知道你能做些什么。

然后查看对.gitignore的更改并在每个行条目上执行git rm - 使用通配符组合条目以防gitignore膨胀