背景:git clone 仓库 时,出现报错:error: RPC failed; curl 56 Recv failure: Connection was reset
error: 3661 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output


分析:

1. EOF 问题:过早的文件结束符

fatal: 过早的文件结束符(EOF)
fatal: fetch-pack: 无效的 index-pack 输出

2. 网络问题:连接关闭,即 发生了某种断开连接, 66.00 KiB/s应该是表示网络速率. 本机连接仓库服务器时网络不稳定——》解决:切换网络

Connection to github.com closed by remote host.66.00 KiB/s
fetch-pack: unexpected disconnect while reading sideband packet

3. 文件过大问题:第一行的 curl,出现这个关键词,基本可以确定是由于远程仓库中存在过大的文件 ——》解决:扩大传输限制 ——》git bash中 运行 git config --global http.postBuffer 524288000

error: RPC failed; curl 12 tranfer closed with outstanding read data remaining.

解决方案: 可用于 git 在网络差/大文件传输/长时间未响应的情况,依次运行如下四条命令

git config --global http.postBuffer 524288000   # 设置http请求时用的缓冲区的大小(500MB)
git config --global http.version HTTP/1.1         # 切换到 HTTP/1.1 可能会更加稳定

git config --global http.lowSpeedLimit 0       # 传输速度限制,0 即不要对传输速度进行限制

git config --global http.lowSpeedTime 999999         # 设置传输速度低于 http.lowSpeedLimit 限制时,允许的最大时间 

  • 增加了 Git 在进行 HTTP 请求时使用的缓冲区大小postBuffer 是 Git 在进行 git pushgit fetch 等操作时,通过 HTTP 传输的数据缓冲区大小,默认值是 1MB。将其设置为 524288000 字节(500MB),可以帮助解决在上传大文件时因为缓冲区大小限制而导致的失败。
  • 强制 Git 使用 HTTP/1.1 协议而非 HTTP/2 协议。虽然 HTTP/2 在许多场景下会更快,但在某些网络环境下,尤其是与一些服务器兼容性较差时,使用 HTTP/2 可能会导致性能问题或连接不稳定。因此,设置为 HTTP/1.1 可以确保兼容性和稳定性。——》当遇到网络环境差,或者与服务器的兼容性问题时,切换到 HTTP/1.1 可能会更加稳定。
  • 设置 Git 在传输数据时的速度限制。默认情况下,如果 Git 在传输数据时低于某个速度限制,Git 会认为连接不稳定并中断传输。通过设置为 0,你告诉 Git 不要对传输速度进行限制,无论连接速度多慢都继续传输。使用场景:适用于网络状况不佳,传输速度可能非常慢的环境。设置为 0 之后,Git 会在速度较慢的情况下继续等待,而不是中断连接。

  • 设置 Git 在检测到传输速度低于 http.lowSpeedLimit 限制时,允许的最大时间。默认情况下,如果传输速度低于一定水平,Git 会在一定时间内等待,超过这个时间后就会断开连接。通过设置为 999999,Git 会在速度慢的情况下允许非常长时间的等待,直到连接超时。使用场景:适用于需要允许长时间传输的大文件或者在网络状况极差的情况下,防止 Git 过早中断连接。

此时,重新克隆  即可成功

以下是 其他相关知识点。


在 git bash中查看 git(config的)配置情况

  1. 查看当前用户的 Git 配置: git config --list

    显示所有当前的 Git 配置,包括 全局 和 仓库 级别的配置。

  2. 查看全局配置: git config --global --list 

    只会显示全局配置,比如用户名和邮箱等。

  3. 查看系统级配置:

    git config --system --list 

    这会显示系统范围的配置,通常由 Git 安装时设置

  4. 查看某个特定配置项:
    如果你只想查看某个特定配置项,比如用户名或邮箱,可以使用:

    git config user.name git config user.email

  5. 查看某个 Git 仓库的配置,可以在仓库目录下执行: git config --local --list 

例子:查看 git 所有的配置:

查看全局的配置 和 系统范围的配置


 参考:解决fetch-pack: unexpected disconnect while reading sideband packet fatal: early EOF fatal: fetch-pack-CSDN博客

https://juejin.cn/post/7078651060419559454

其他克隆相关错误有:git 克隆仓库报错:Failed to connect to github.com port 443 after 21073 ms: Couldn‘t connect to server-CSDN博客

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐