解决Git在clone项目时遇到的Error:RPC failed;curl 56 OpenSSL SSL_read: Connection was Reset, errno 10054

问题描述

在找开源项目时,准备clone Github上著名的开源项目halo时发现git clone失败,具体报错如下:

Error:RPC failed;curl 56 OpenSSLSSL_read:Connection was Reset, errno 10054

fatal: the remote end hung up unexpectedly

fatal: early EOF

fatal: index-pack failed

具体如下图:

解决方案

在检索解决方案的时候找到了多种方案:

方案一:本解决方案为Stackoverflow上的高分回答。

原回答如下:

(我要是没记错的话应该在 git config之前要先进行一次git init)

First, turn off compression:

git config --global core.compression 0

Next, let's do a partial clone to truncate the amount of info coming down:

git clone --depth 1

When that works, go into the new directory and retrieve the rest of the clone:

git fetch --unshallow

or, alternately,

git fetch --depth=2147483647

Now, do a regular pull:

git pull --all

I think there is a glitch with msysgit in the 1.8.x versions that exacerbates these symptoms, so another option is to try with an earlier version of git (<= 1.8.3, I think).

这一套三板斧下来,应该可以解决80%的情况(其他答主所言),但是由于我最开始只在CSDN上看到解决方案,只进行了第一步问题并未得到解决。

方案二:本方案为最后解决笔者问题的方案(同样源于Stackoverflow)

With this kind of error, I usually start by raising the postBuffer size by:(即增大postBuffer的值,524288000比特就是500兆的大小)

git config --global http.postBuffer 524288000

(some comments below report having to double the value):

git config --global http.postBuffer 1048576000

原因

虽然可以clone项目了,但是不清楚error产生具体原因仍然未解决我们遇到的问题。

From the git config man page, http.postBuffer is about:

Maximum size in bytes of the buffer used by smart HTTP transports when POSTing data to the remote system.For requests larger than this buffer size, HTTP/1.1 and Transfer-Encoding: chunked is used to avoid creating a massive pack file locally. Default is 1 MiB, which is sufficient for most requests.

按照笔者的理解翻译一下,大致是说:

http.postBuffer就是指HTTP协议在传输数据到远端时缓冲区容纳容量的最大比特数,对于请求超过了缓冲区大小的请求,HTTP/1.1和Transfer-Encoding: chunked会被用来避免在本地创建一个大文件。系统默认值是1兆比特,对于大多数请求而言是足够的。

即使是clone项目,也可能产生影响,目前来看error大概率是因为这个原因产生的。

StackOverflow的提问在这里。

由于笔者也是初学者,文中涉及的问题和疏漏之处请多指点,关于产生问题的原因后续查阅也会继续补充。

多谢!

你可能感兴趣的:(解决Git在clone项目时遇到的Error:RPC failed;curl 56 OpenSSL SSL_read: Connection was Reset, errno 10054)