git Clone succeeded, but checkou

2022-05-07  本文已影响0人  轩岚

今天使用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种解决方法

  1. 修改git上用特殊字符命名的文件

  2. 拉取远程文件时忽略包含特殊文件名的文件

方法1最大阻碍就是说服别人修改已上传文件名,如果是经常逛github浏览开源项目应该发现基本没有这种文件命名方式,更多的是用-_拼接;使用方法2的前提是项目运行时特殊文件名的文件不是必须的,不拉取下来都能运行项目,我这里使用的是方法2,刚好项目内特殊文件名的文件项目运行时用不到

方法2步骤

不直接使用git clone而是使用git sparse-checkout

  1. mkdir filename 创建本地文件目录

  2. git init加入 git 版本管理

  3. git remote add -f origin git@IP:XXX.git添加远程仓地址

  4. git sparse-checkout init初始化sparse-checkout且使用该模式,运行命令后会在目录.git/info/下生成sparse-checkout文件

  5. 在sparse-checkout文件内输入以下内容,我这里是需要忽略mock-api目录下的所有文件

/*
!/mock-api/
  1. git config core.protectNTFS false Windows下默认true,不符合NTFS策略的文件不会被签出(文件名有\就不符合),设置为false后可以关闭保护机制(不执行这句命令会导致sparse-checkout失效,先被NTFS策略拦截)

  2. git pull origin master拉取master分支代码

上一篇下一篇

猜你喜欢

热点阅读