错误:RPC失败;卷曲转移关闭,剩余未完成的读取数据

时间:2016-07-27 16:47:18

标签: git gitlab

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

enter image description here

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

如何避免此错误?

22 个答案:

答案 0 :(得分:118)

它经常发生,我在一个缓慢的互联网连接,我必须克隆一个体面的巨大的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

答案 1 :(得分:34)

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

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

将其声明为

  1. Git提供程序(GitLab我正在使用的,GitHub)。
  2. 将此添加到本地身份。
  3. 然后按命令克隆:

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

    没有错误发生。

    以上问题

      

    错误:RPC失败;卷曲18转移关闭与优秀读取数据   其余

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

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

    git config --global http.postBuffer 524288000
    

答案 2 :(得分:13)

您需要关闭压缩:

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 

如果有帮助,请投票:)

答案 3 :(得分:8)

当我尝试从遥控器克隆时,重复出现同样的问题:

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

答案 4 :(得分:4)

如上所述,首先从bash运行你的git命令,在开头添加增强的日志指令:GIT_CURL_VERBOSE=1 GIT_TRACE=1 git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin

e.g。 {{1}} 这将显示详细的错误信息。

答案 5 :(得分:3)

通常是由于以下原因之一而发生的:

  1. 网速慢。
  • 在许多情况下,切换到具有稳定网络连接的 LAN 电缆会有所帮助。在获取数据时避免执行任何并行网络密集型任务。
  1. 在您尝试从中获取数据的服务器端出现小 TCP/IP 连接超时。
  • 您无能为力。您所能做的就是请求您的系统管理员或 CI/CD 团队负责增加 TCP/IP 超时并等待。
  1. 服务器负载过重。
  • 由于工作时间服务器负载过重,下载大文件可能经常失败。晚上开始下载后离开您的机器。
  1. 客户端机器上的小 HTTPS 缓冲区。
  • 增加帖子和请求的缓冲区大小可能会有所帮助,但不能保证
<块引用>

git config --global http.postBuffer 524288000

git 配置 --global http.maxRequestBuffer 524288000

git config --global core.compression 0

答案 6 :(得分:2)

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

答案 7 :(得分:2)

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

答案 8 :(得分:1)

With me this problem occurred because the proxy configuration. I added the ip git server in the proxy exception. The git server was local, but the no_proxy environment variable was not set correctly.

I used this command to identify the problem:

#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

In return there was the "Proxy-Authorization" as the git server was spot should not go through the proxy. But the real problem was the size of the files defined by the proxy rules

答案 9 :(得分:1)

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

git fetch --all  or git clone 

    

如果出现错误 curl 56 Recv failure ,请通过zip或 命名分支的名称,而不是-all

git fetch origin BranchName 

答案 10 :(得分:1)

此错误似乎更常见于互联网连接速度缓慢或出现问题的情况。我已经以良好的互联网速度进行连接,然后运行良好。

答案 11 :(得分:1)

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

答案 12 :(得分:1)

对我来说有效的是,因为 git 的内存要求可能会发生此错误。我已将这些行添加到 $USER_HOME 中的全局 git 配置文件 .gitconfig 中,即 C:\Users\<USER_NAME>\.gitconfig

[core] 
packedGitLimit = 512m 
packedGitWindowSize = 512m 
[pack] 
deltaCacheSize = 2047m 
packSizeLimit = 2047m 
windowMemory = 2047m

答案 13 :(得分:1)

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

例如:

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

答案 14 :(得分:0)

这个问题100%解决了。我遇到了这个问题,我的项目经理更改了仓库名称,但我使用的是旧仓库名称。

Engineer@-Engi64 /g/xampp/htdocs/hospitality
$ git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repo/cms
Cloning into 'cms'...
remote: Counting objects: 10647, done.
error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

我是如何解决这个问题的。回购链接无效,所以这就是我面临这个问题的原因。克隆前请检查您的回购链接。

答案 15 :(得分:0)

这对我有用

export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1

答案 16 :(得分:0)

可能是两个原因

  1. 互联网速度很慢(在我的情况下)
  2. 缓冲区大小较小,在这种情况下,您可以运行命令 git config --global http.postBuffer 524288000

答案 17 :(得分:0)

克隆大型存储库时通常会出现此问题。如果git clone http://github.com/large-repository --depth 1在Windows cmd上不起作用。尝试在Windows PowerShell中运行命令。

答案 18 :(得分:0)

在这里尝试了所有答案。 我试图将可可粉添加到我的机器上。

我没有SSH密钥,所以谢谢@Do Nhu Vy

https://stackoverflow.com/a/38703069/2481602

最后使用

git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master

最终解决发现的问题https://stackoverflow.com/a/50959034/2481602

答案 19 :(得分:0)

更改git clone协议以尝试。

例如,当“git clone https://xxxxxxxxxxxxxxx

时发生此错误

你可以尝试使用“git clone git:// xxxxxxxxxxxxxx”,也许可以。

答案 20 :(得分:-3)

这些步骤对我有用:

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

我希望这也适合你。

答案 21 :(得分:-5)

试试这个

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup

这对我有用.. capture.png