我想在向.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 臃肿