问题:

在尝试从 GitHub clone 大型仓库时,经常遭遇网络连接问题,导致克隆操作失败。错误信息如下:

error: RPC failed; curl 18 transfer closed with outstanding read data remaining
error: 6801 bytes of body are still expected

出现原因

网络连接问题:网络中断或速度过慢导致传输中断
服务器限制:Git 服务器对传输大小或时间有限制
客户端缓冲区不足:Git 的 HTTP 缓冲区设置过小
大型文件问题:仓库中包含大型文件或二进制文件
代理或防火墙干扰:中间网络设备中断了长连接

解决方案:

方法一:浅克隆

浅克隆:只下载指定数量的最新提交(这里是 depth=1,即只获取最近一次提交)

git clone --depth [--branch 分支名/特定的标签] 1 git地址
#取回其余分支
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
git fetch --unshallow

方法二:当特别庞大的仓库时

可以使用分阶段克隆

# 第一步:初始化空仓库
git init repo-name
cd repo-name

# 第二步:添加远程
git remote add origin 地址

# 第三步:分批获取
git fetch --depth=100 origin master  # 获取前100个提交
git fetch --depth=100 origin master  # 再获取下一批
# 重复直到获取完整历史

# 第四步:检出分支
git checkout -b master origin/master

方法二:增加 Git 的缓冲区大小

# 设置更大的缓冲区(500MB)
git config --global http.postBuffer 524288000

# 验证设置
git config --global --get http.postBuffer

方法三:启用压缩传输

此方法,慎用

git config --global core.compression 9
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐