今天使用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 false
Windows下默认true,不符合NTFS策略的文件不会被签出(文件名有\
就不符合),设置为false后可以关闭保护机制(不执行这句命令会导致sparse-checkout失效,先被NTFS策略拦截) -
git pull origin master
拉取master分支代码
网友评论