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

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

当我尝试从 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

然后中止克隆。我怎样才能避免这种情况?

几天后,今天我刚刚解决了这个问题。生成ssh key,按照这篇文章:

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

声明为

  1. Git 提供商(Git我正在使用的实验室,GitHub)。
  2. 将此添加到本地身份。

然后通过命令克隆:

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

没有错误发生。

以上问题

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

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

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

git config --global http.postBuffer 524288000

我遇到这个问题是因为代理配置。我在代理异常中添加了 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

在 return 中有 "Proxy-Authorization",因为 git 服务器不应该通过代理。 但真正的问题是代理规则定义的文件大小

如上所述,首先 运行 来自 bash 的 git 命令在开头添加增强的日志指令: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 这将向您显示详细的错误信息。

这种情况经常发生,我的互联网连接速度很慢,我必须克隆一个相当大的 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

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

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

试试这个

$ 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

更改 git 克隆协议进行尝试。

比如这个错误发生在"git clone https://xxxxxxxxxxxxxxx"

你可以试试 "git clone git://xxxxxxxxxxxxxx",也许可以。

简单的解决方案:与其通过 https 克隆,不如通过 ssh 克隆。

例如:

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

这些步骤对我有用:

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

我希望这对你也有用。

网络连接问题。
可能是由于持久连接超时。
最好的办法就是换个网络。

这些步骤适用于 me:using git:// 而不是 https://

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

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

终于用上了

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

最终解决发现的问题

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

此错误似乎更常发生在 Internet 连接缓慢或有问题的情况下。我已经连接到良好的互联网速度然后它运行完美。

您需要关闭压缩:

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 

如果对你有帮助就点个赞吧:)

当您是代理问题或网络缓慢时,就会出现此问题。您可以使用深度解决方案或

git fetch --all  or git clone 

    

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

git fetch origin BranchName 

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

可能有两个原因

  1. 网速很慢(这是我的情况)
  2. 缓冲区较小,在这种情况下你可以运行命令 git 配置 --global http.postBuffer 524288000

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

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

通常是由于以下原因之一:

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

git config --global http.postBuffer 524288000

git config --global http.maxRequestBuffer 524288000

git config --global core.compression 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

我是怎么解决这个问题的。 Repo link 无效,这就是我遇到这个问题的原因。请在克隆之前检查你的 repo link。

这对我有用

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

我在将一些代码推送到 Github 时遇到了同样的问题。

我尝试了 git config --global http.postBuffer 524288000 但它对我不起作用。

原因

这是因为你的提交历史and/or任何文件大小都比较大。

我的案例

在我的例子中,包-lock.json 导致了问题。 它的大小为 1500+KB,代码为 33K 行

我是怎么解决的?

  1. 我提交并推送了所有内容没有包-lock.json
  2. 复制package-lock.json.
  3. 的内容
  4. GitHub 存储库页面创建了一个名为 package-lock.json 的新文件
  5. 粘贴包的内容-lock.json并提交。
  6. git 在本地拉

完成。

小贴士

  • 保持每个提交大小更小
  • 经常推送
  • 使用良好的互联网连接

希望对你有所帮助。

我也面临这个问题。解决它。 问题是互联网连接速度慢。请检查您的互联网连接。 我已经连接到良好的互联网速度然后它完美地工作。希望对你有帮助。

git clone --global core.compression 0

然后

git clone --depth=1 <https://your_repo.git>

然后

git fetch --depth=2

然后

git fetch --depth=10

... 等等,直到他写

remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0

最后可以写

git fetch --unshallow

你会被抛出

fatal: --unshallow on a complete repository does not make sense

如果在某个阶段您再次遇到错误,请尝试将 --depth 属性 设置为较小的值并逐渐增加