错误:RPC失败;卷毛传输关闭,剩余未读数据


128

我尝试从GitLab(GitLab 6.6.2 4ef8369)克隆存储库并出错:

在此处输入图片说明

remote: Counting objects: 66352, done.
remote: Compressing objects: 100% (10417/10417), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

如何避免这个错误?

Answers:


222

它经常发生,我的网络连接速度很慢,我必须克隆一个不错的git存储库。最常见的问题是连接关闭,整个克隆被取消。

Cloning into 'large-repository'...
remote: Counting objects: 20248, done.
remote: Compressing objects: 100% (10204/10204), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining 
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

经过大量的试验和错误以及许多“远程挂断”,我有一种适合我的方法。这个想法是先做一个浅表克隆,然后用其历史记录更新存储库。

$ git clone http://github.com/large-repository --depth 1
$ cd large-repository
$ git fetch --unshallow

10
这是描述无需切换至SSH即可解决该问题的解决方法的唯一答案。这对我有用,谢谢!
加里

14
这里的关键是--depth 1--unshallow。这也适用于在慢速连接上获取现有存储库:git fetch --depth 1then git fetch --unshallow
Andrew T.

1
为了清楚起见,@ AndrewT。该git fetch --unshallow命令以比git clone?更宽容的方式处理连接丢失。那是什么与众不同?
洛厄尔

2
现在,git fetch --unshallow命令给出RPC failed;错误
ms_27 '19

1
没为我工作。失败git fetch --unshallow。猜猜我的仓库即使对于这种方法也太大了。仅SSH有效。
乔纳森·卡布雷拉

59

几天后,今天我才解决了这个问题。生成ssh密钥,请遵循本文:

https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

声明给

  1. Git提供程序(我正在使用的GitLab,GitHub)。
  2. 将此添加到本地身份。

然后通过命令克隆:

git clone username@mydomain.com:my_group/my_repository.git

而且没有错误发生。

上面的问题

错误:RPC失败;curl 18传输关闭,剩余未读数据

因为通过HTTP协议(curl命令)克隆时出错。

并且,您应该增加缓冲区大小:

git config --global http.postBuffer 524288000

7
从HTTP更改为SSH对我有用。配置http.postBuffer无效。
thangdc94 '17

如果错误仍然存​​在,则应编辑ssh配置文件vi /users/username/.ssh/config并添加serverAliveInterval 120并使用wq退出vi(保存并退出)。这实际上将防止服务器超时和连接中断错误。
Tanvir Singh's

很好,但是没有人知道为什么100%克隆会发生这种情况吗?
workplaylifecycle

改变http.postBuffer对我有用-谢谢!
Negar Zamiri

谢谢,它对我
有用

17

当我尝试从远程克隆时,反复遇到相同的问题:

remote: Counting objects: 182, done.
remote: Compressing objects: 100% (149/149), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

最后,这对我有用:

git clone https://username@bitbucket.org/repositoryName.git --depth 1

3
--depth 1是做什么的
Wahdat Kashmiri

对我来说很好。
vijay junupalli

如果源存储库完整,则将浅存储库转换为完整存储库,消除浅存储库施加的所有限制。如果源存储库较浅,请尽可能多地获取数据,以使当前存储库具有与源存储库相同的历史记录。
RahmanRezaee

6

这些步骤对我有用:使用git://代替https://


3
欢迎使用堆栈溢出。请尝试提供更详细的答案,以便任何想要尝试您的解决方案的人都可以轻松做到。
McMutton

实际上,这个答案比该线程中的下一个答案更具体..
xxxvodnikxxx

5

简单的解决方案:而不是通过https进行克隆,而是通过ssh进行克隆。

例如:

git clone https://github.com/vaibhavjain2/xxx.git - Avoid
git clone git@github.com:vaibhavjain2/xxx.git - Correct

是。我是Windows用户。
Vaibhav Jain

5

网络连接问题。
可能是由于持续的连接超时。
最好的方法是更改​​为另一个网络。


5

您需要关闭压缩功能:

git config --global core.compression 0

那么你需要使用浅克隆

git clone --depth=1 <url>

然后最重要的步骤是CD进入克隆的项目

cd <shallow cloned project dir>

现在逐步打开克隆

git fetch --depth=N, with increasing N

例如。

git fetch --depth=4

然后,

git fetch --depth=100

然后,

git fetch --depth=500

您可以通过替换N来选择所需的步骤,

最后使用下载所有其余的修订,

git fetch --unshallow 

如果有帮助,请支持:)


4

如上所述,首先从bash运行git命令,并在开头添加增强的log指令: GIT_TRACE=1 GIT_CURL_VERBOSE=1 git ...

例如,GIT_CURL_VERBOSE=1 GIT_TRACE=1 git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin 这将向您显示详细的错误信息。


2

对于我来说,发生此问题是因为代理配置。我在代理例外中添加了ip git服务器。git服务器是本地的,但是no_proxy环境变量未正确设置。

我使用此命令来确定问题:

#Linux:
export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1

#Windows
set GIT_TRACE_PACKET=1
set GIT_TRACE=1
set GIT_CURL_VERBOSE=1

作为回报,存在“代理授权”,因为git服务器是不应通过代理的。但是真正的问题是代理规则定义的文件大小


2

对我来说,问题是连接在整个克隆完成之前就关闭了。我用以太网代替了wifi连接。然后为我解决



1

Internet连接缓慢或出现故障时,通常会发生此错误。我已经连接了良好的互联网速度,然后运行良好。


0

当您是代理服务器问题或网络速度慢时,此问题就会出现。您可以选择深度解决方案,或者

git fetch --all  or git clone 

    

如果这给出curl 56 Recv failure的错误,则通过zip下载文件或指定分支的名称而不是--all

git fetch origin BranchName 

-1

尝试更改git clone协议。

例如,当“ git clone https:// xxxxxxxxxxxxxxx ” 时发生此错误

您可以尝试使用“ git clone git:// xxxxxxxxxxxxxx”,然后确定。


-6

这些步骤对我有用:

cd [dir]
git init
git clone [your Repository Url]

希望对您也有用。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.