我想在将一些文件添加到.gitignore
之后清理我的仓库,所以我跑了
git rm --cached *
结果:
fatal: pathspec '$Recycle.Bin' did not match any files
我认为这是由于文件名中的$
,是否有解决方法?
答案 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膨胀