git clone 报错 |error: RPC failed; curl 56 Recv failure: Connection was reseterror: 3661 bytes of body
默认情况下,如果传输速度低于一定水平,Git 会在一定时间内等待,超过这个时间后就会断开连接。使用场景:适用于需要允许长时间传输的大文件或者在网络状况极差的情况下,防止 Git 过早中断连接。服务器兼容性较差时,使用 HTTP/2 可能会导致性能问题或连接不稳定。使用场景:适用于网络状况不佳,传输速度可能非常慢的环境。,Git 会在速度慢的情况下允许非常长时间的等待,直到连接超时。之后,Git 会
背景: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 push
或git 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的)配置情况
-
查看当前用户的 Git 配置:
git config --list
显示所有当前的 Git 配置,包括 全局 和 仓库 级别的配置。
-
查看全局配置:
git config --global --list
这只会显示全局配置,比如用户名和邮箱等。
-
查看系统级配置:
git config --system --list
这会显示系统范围的配置,通常由 Git 安装时设置。
-
查看某个特定配置项:
如果你只想查看某个特定配置项,比如用户名或邮箱,可以使用:git config user.name git config user.email
-
查看某个 Git 仓库的配置,可以在仓库目录下执行:
git config --local --list
例子:查看 git 所有的配置:
查看全局的配置 和 系统范围的配置
更多推荐
所有评论(0)