今天使用git clone命令去拉取远程仓库时,遇到了错误: Clone succeeded, but checkout failed.
仔细分析上面的错误提示,有一个文件的路径被认为是不合法路径mock-api/api/ifast/ifast-cms\api\v1\app\banners.json,这个路径竟然既有/和``
查看远程git文件,文件名是带,然而在win10下属于特殊字符不能用作文件名
原来在mac系统下是支持这种命名方式,其他同事使用mac系统命名文件且上传到git,等到我在win10系统去用git clone时就报错了
2种解决方法
- 修改git上用特殊字符命名的文件
- 拉取远程文件时忽略包含特殊文件名的文件
方法1最大阻碍就是说服别人修改已上传文件名,如果是经常逛github浏览开源项目应该发现基本没有这种文件命名方式,更多的是用-或_拼接;使用方法2的前提是项目运行时特殊文件名的文件不是必须的,不拉取下来都能运行项目,我这里使用的是方法2,刚好项目内特殊文件名的文件项目运行时用不到
方法2步骤
不直接使用git clone而是使用git sparse-checkout
-
mkdir filename创建本地文件目录 -
git init加入 git 版本管理 -
git remote add -f origin git@IP:XXX.git添加远程仓地址 -
git sparse-checkout init初始化sparse-checkout且使用该模式,运行命令后会在目录.git/info/下生成sparse-checkout文件 -
在sparse-checkout文件内输入以下内容,我这里是需要忽略mock-api目录下的所有文件
/* !/mock-api/ -
git config core.protectNTFS falseWindows下默认true,不符合NTFS策略的文件不会被签出(文件名有``就不符合),设置为false后可以关闭保护机制(不执行这句命令会导致sparse-checkout失效,先被NTFS策略拦截) -
git pull origin master拉取master分支代码