最近要用到公司的项目文档,默默就去git上拉取,结果无数次报错,下载到一半就挂掉,永远下不完。后来发现,整个文档里零零碎碎加一起有1.8G,瞬间懵住。
在网上也查找了很多资料,大多都是扩充缓存区,浅层clone之类的。结果对这个1.8G的项目毫无用处.....
最后,只能放大招,更换为SSH拉取项目,在折腾了一个世纪后,项目终于被成功拉下来了。。。
各种解决方案都放出来,希望也能帮到一样被坑到的小伙伴吧。
先看看报错吧,就是这样的几行报错:
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
下面先把前辈的解决方案放出来,能解决的话,就不用换拉取方式了。
- 考虑缓存区溢出,扩充缓存区,下面是500M的
git config http.postBuffer 524288000
- 考虑网络下载速度缓慢
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
- 要是依旧clone失败,则首先浅层clone,然后更新远程库到本地
git clone --depth=1 http://gitlab.xxx.cn/yyy/zzz.git
git fetch --unshallow
如果以上方法都无法解决的话,那就只能放大招了。更换为SSH地址拉取项目!!!
第一件事,打开Git Bush客户端窗口
- 查看是否已经有配置SSH公钥的文件
ls ~/.ssh
如果没有任何打印内容的话,那就没有配置,继续自己生成公钥。 - 生成ssh key文件,执行
ssh-keygen -t rsa -C "xxx.xxx.com"
-t 指定密钥类型,默认是 rsa ,可以省略
-C 设置注释文字,比如git的地址。
-f 指定密钥文件存储文件名,我们省略了命令执行的时候会让你选择文件名,直接回车就会保存在默认的位置。
然后会让你输入两次密码,这个密码你可以随便输一个你记得住的密码。
当提示你:
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 "邮箱地址"
这个时候,你的本地密钥已经生成了。
第二件事,查看SSH公钥,并在git上配置
- 查看SSH公钥
cat ~/.ssh/id_rsa.pub
此时会打印一长串的公钥,copy带走
- 进入git或者其他代码托管平台,自己去设置里找配置SSH公钥的地方,把整个公钥粘进去
记得不要忽略公钥上面的ssh-rsa
这个也是要随下面的公钥内容粘贴进去,不然会报错的。
设置完公钥,就可以去拉取项目啦 - 测试
ssh -T git@xxx.com
-T
后面的内容不是拼接的,是直接copy过来的ssh地址,地址的前面会是git@
好了,下面就是漫长的等待过程,不过起码结果是美好的,项目完美拉取成功。
拉取完项目,就看你是否喜欢ssh拉取了,反正我用小乌龟不习惯,就拉取之后重新切回https,因为项目整个的git内容都已经拉下来了,所以https无压力路过,完美。
完结撒花✿✿ヽ(°▽°)ノ✿