最近要用到公司的項(xiàng)目文檔,默默就去git上拉取,結(jié)果無(wú)數(shù)次報(bào)錯(cuò),下載到一半就掛掉,永遠(yuǎn)下不完。后來(lái)發(fā)現(xiàn),整個(gè)文檔里零零碎碎加一起有1.8G,瞬間懵住。
在網(wǎng)上也查找了很多資料,大多都是擴(kuò)充緩存區(qū),淺層clone之類(lèi)的。結(jié)果對(duì)這個(gè)1.8G的項(xiàng)目毫無(wú)用處.....
最后,只能放大招,更換為SSH拉取項(xiàng)目,在折騰了一個(gè)世紀(jì)后,項(xiàng)目終于被成功拉下來(lái)了。。。
各種解決方案都放出來(lái),希望也能幫到一樣被坑到的小伙伴吧。
先看看報(bào)錯(cuò)吧,就是這樣的幾行報(bào)錯(cuò):
git.exe pull --progress -v --no-rebase "origin" master
POST git-upload-pack (175 bytes)
remote: Enumerating objects: 3796, done.
remote: Counting objects: 100% (3796/3796), done.
fatal: early EOF
fatal: The remote end hung up unexpectedly
fatal: index-pack failed
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
下面先把前輩的解決方案放出來(lái),能解決的話,就不用換拉取方式了。
- 考慮緩存區(qū)溢出,擴(kuò)充緩存區(qū),下面是500M的
git config http.postBuffer 524288000
- 考慮網(wǎng)絡(luò)下載速度緩慢
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
- 要是依舊clone失敗,則首先淺層clone,然后更新遠(yuǎn)程庫(kù)到本地
git clone --depth=1 http://gitlab.xxx.cn/yyy/zzz.git
git fetch --unshallow
如果以上方法都無(wú)法解決的話,那就只能放大招了。更換為SSH地址拉取項(xiàng)目?。?!
第一件事,打開(kāi)Git Bush客戶(hù)端窗口
- 查看是否已經(jīng)有配置SSH公鑰的文件
ls ~/.ssh
如果沒(méi)有任何打印內(nèi)容的話,那就沒(méi)有配置,繼續(xù)自己生成公鑰。 - 生成ssh key文件,執(zhí)行
ssh-keygen -t rsa -C "xxx.xxx.com"
-t 指定密鑰類(lèi)型,默認(rèn)是 rsa ,可以省略
-C 設(shè)置注釋文字,比如git的地址。
-f 指定密鑰文件存儲(chǔ)文件名,我們省略了命令執(zhí)行的時(shí)候會(huì)讓你選擇文件名,直接回車(chē)就會(huì)保存在默認(rèn)的位置。
然后會(huì)讓你輸入兩次密碼,這個(gè)密碼你可以隨便輸一個(gè)你記得住的密碼。
當(dāng)提示你:
Your public key has been saved in /home/you/.ssh/id_rsa.pub.
The key fingerprint is: # 03:0e:f2:3b:ca:85:d6:17:a9:7d:f0:68:9d:f0:a2:db "郵箱地址"
這個(gè)時(shí)候,你的本地密鑰已經(jīng)生成了。
第二件事,查看SSH公鑰,并在git上配置
- 查看SSH公鑰
cat ~/.ssh/id_rsa.pub
此時(shí)會(huì)打印一長(zhǎng)串的公鑰,copy帶走
- 進(jìn)入git或者其他代碼托管平臺(tái),自己去設(shè)置里找配置SSH公鑰的地方,把整個(gè)公鑰粘進(jìn)去
記得不要忽略公鑰上面的ssh-rsa這個(gè)也是要隨下面的公鑰內(nèi)容粘貼進(jìn)去,不然會(huì)報(bào)錯(cuò)的。
設(shè)置完公鑰,就可以去拉取項(xiàng)目啦 - 測(cè)試
ssh -T git@xxx.com
-T后面的內(nèi)容不是拼接的,是直接copy過(guò)來(lái)的ssh地址,地址的前面會(huì)是git@
好了,下面就是漫長(zhǎng)的等待過(guò)程,不過(guò)起碼結(jié)果是美好的,項(xiàng)目完美拉取成功。
拉取完項(xiàng)目,就看你是否喜歡ssh拉取了,反正我用小烏龜不習(xí)慣,就拉取之后重新切回https,因?yàn)轫?xiàng)目整個(gè)的git內(nèi)容都已經(jīng)拉下來(lái)了,所以https無(wú)壓力路過(guò),完美。
完結(jié)撒花??ヽ(°▽°)ノ?