git clone 报错 RPC failed; curl 18 transfer closed with outstanding read data remaining

Posted 诗渊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git clone 报错 RPC failed; curl 18 transfer closed with outstanding read data remaining相关的知识,希望对你有一定的参考价值。

今天在 clone 一个gitlab 项目时,一直报错:

remote: Counting objects: 835, done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly MiB | 18.35 MiB/s
fatal: early EOF; 87%(727/835), 297.93 MiB | 18.35 MiB/s
fatal: index-pack failed

Google 了一下 主要是方案是以下两种:

一、增加缓冲区大小

git config --global http.postBuffer 524288000
git config --global http.maxRequestBuffer 524288000

二、 延长低网络的请求时长(这种主要发生在弱网情况)

git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999

笔者试了以上两种方法后依然没有解决,最后查看项目,因为是在内网中开发,为了方便同事快速启动项目,把对应的node_modules也压缩后加入到了版本控制,而且中间更换了几次node版本,猜测是因为这个导致的项目太大clone不下来,最后采取分步clone的方法:

 (1) git clone --depth 1 your_repository_url
 (2) cd your_repository
 (3) git fetch --unshallow

如果(3)操作失败,可以分批次 fetch ,如下:

 (4) git fetch --depth 10
 (5) git fetch --depth 20
 (6) git fetch --depth 40

具体commit数量可以根据自己项目情况来,如果操作失败,则适当减少,在最后感觉拉取差不多的时候,再执行(3)操作,这样就能正常把项目 clone 下来。

两点建议:

  • 不要把类似node_modules压缩包这类大文件且没有版本管理意义的加入到版本控制中;
  • 如果可以使用ssh,建议使用ssh,而不是使用http方式,使用ssh可以避开上述问题。

以上是关于git clone 报错 RPC failed; curl 18 transfer closed with outstanding read data remaining的主要内容,如果未能解决你的问题,请参考以下文章

git clone报错error: RPC failed; curl 18 transfer closed with outstanding read data remaining

使用git clone命令报错:error: RPC failed; curl 18 transfer closed with outstanding read data remaining(示例代码

(吃灰系列)git clone时RPC failed

git clone时RPC failed; curl 18 transfer closed with outstanding read data remaining

关于 用git clone 命令时报错RPC failed; curl 56 Recv failure....’ 的解决办法

git clone error:RPC failed; curl 18 transfer closed with outstanding read data remaining