今天使用git clone
命令去拉取遠(yuǎn)程倉庫時颅悉,遇到了錯誤: Clone succeeded, but checkout failed.
仔細(xì)分析上面的錯誤提示沽瞭,有一個文件的路徑被認(rèn)為是不合法路徑mock-api/api/ifast/ifast-cms\api\v1\app\banners.json
,這個路徑竟然既有/
和\
查看遠(yuǎn)程git文件剩瓶,文件名是帶\
驹溃,然而在win10下\
屬于特殊字符不能用作文件名
原來在mac系統(tǒng)下是支持這種命名方式,其他同事使用mac系統(tǒng)命名文件且上傳到git儒搭,等到我在win10系統(tǒng)去用git clone
時就報錯了
2種解決方法
修改git上用特殊字符命名的文件
拉取遠(yuǎn)程文件時忽略包含特殊文件名的文件
方法1最大阻礙就是說服別人修改已上傳文件名吠架,如果是經(jīng)常逛github瀏覽開源項目應(yīng)該發(fā)現(xiàn)基本沒有這種文件命名方式,更多的是用-
或_
拼接搂鲫;使用方法2的前提是項目運行時特殊文件名的文件不是必須的傍药,不拉取下來都能運行項目,我這里使用的是方法2魂仍,剛好項目內(nèi)特殊文件名的文件項目運行時用不到
方法2步驟
不直接使用git clone
而是使用git sparse-checkout
mkdir filename
創(chuàng)建本地文件目錄git init
加入 git 版本管理git remote add -f origin git@IP:XXX.git
添加遠(yuǎn)程倉地址git sparse-checkout init
初始化sparse-checkout且使用該模式拐辽,運行命令后會在目錄.git/info/
下生成sparse-checkout文件在sparse-checkout文件內(nèi)輸入以下內(nèi)容,我這里是需要忽略mock-api目錄下的所有文件
/*
!/mock-api/
git config core.protectNTFS false
Windows下默認(rèn)true擦酌,不符合NTFS策略的文件不會被簽出(文件名有\
就不符合)俱诸,設(shè)置為false后可以關(guān)閉保護(hù)機制(不執(zhí)行這句命令會導(dǎo)致sparse-checkout失效,先被NTFS策略攔截)git pull origin master
拉取master分支代碼