增大http.postBuffer可解决多数RPC failed; curl 18等错误,因其默认仅约1MB,不足应对大仓库传输,调至524288000(500MB)并加--global生效,配合--depth 1浅克隆更高效。

直接调大 http.postBuffer 就能解决绝大多数 RPC failed; curl 18、curl 56、early EOF 类报错,但必须注意单位是字节、且要加 --global 才生效。
为什么改 http.postBuffer 有效
Git 默认的 HTTP 缓冲区只有约 1MB(1048576 字节),拉取 RuoYi、OpenWRT 或含大量小文件/大二进制的仓库时,数据流在传输中途被截断,curl 就抛出 transfer closed with outstanding read data remaining 或 SSL_read: unexpected eof。这不是网络真断了,而是缓冲区撑不住,Git 主动放弃了连接。
增大这个值,等于给 Git 的 HTTP 请求“多备点内存缓存”,让它能一口气收完服务端发来的 packfile 数据包。
-
http.postBuffer控制的是 HTTP(S) 协议下请求/响应的缓冲上限,只影响git clone、git pull、git push等走 HTTP 的操作 - 对 SSH 协议(如
git@gitlab.com:user/repo.git)完全无效 - 值设太小(比如只设
10485760= 10MB)仍可能失败;设太大(如 >2GB)反而可能触发某些旧版 libcurl 的整数溢出
git config --global http.postBuffer 的正确写法
别抄错空格、别漏 --global、别在非 Git 环境下运行——这是最常踩的三个坑。
仅从仓库的暂存文件生成 Git 提交消息。当用户要求 Codex 根据暂存更改、缓存差异、Git 索引或已通过 `git add` 添加的文件来编写、起草、创建或建议提交消息时使用;切勿代表用户执行提交操作。
- 执行命令前,确认你不在某个 Git 仓库目录里(否则可能只改 local 配置,没用)
- 正确命令是:
git config --global http.postBuffer 524288000(500MB,推荐起点值) - 错误示例:
git config http.postBuffer 524288000(缺--global,只改当前 repo) - 错误示例:
git config --globalhttp.postBuffer524288000(参数连写,Git 会报错 unrecognized argument) - 验证是否生效:
git config --get http.postBuffer,应输出524288000
调完还失败?优先试 --depth 1 浅克隆
如果加大缓存后仍报 fatal: early EOF 或卡在某个百分比不动,大概率是远程仓库历史太重(比如有几百个 tag、多年提交、带大附件),这时候强行拉全量没意义。
- 改用浅克隆:
git clone --depth 1 https://gitee.com/y_project/RuoYi.git - 它只拉最新一次提交的文件树,跳过所有历史,速度提升 5–10 倍
- 后续需要完整历史?进目录后执行:
git fetch --unshallow或git fetch --depth=2147483647(等效于全量) - 注意:
--depth 1不会拉取其他分支的引用,git branch -r只能看到origin/HEAD和默认分支
其他容易被忽略的干扰项
缓存调大 + 浅克隆都试过还不行?检查这几个真实存在但常被跳过的点:
- 公司 GitLab 启用 2FA 时,密码登录会直接报
HTTP Basic: Access denied,必须用Personal Access Token替换密码,URL 改成https://@gitlab.example.com/user/repo.git - 某些老旧 Git 版本(如 2.17 之前)不支持超大
postBuffer,升级到git version 2.30+更稳 - Windows 上用 Git Bash 时,若提示
templates not found,不是主因,但可能伴随权限问题,可临时用cmd或 PowerShell 重试 -
curl 92错误大概率是 HTTP/2 连接异常,可强制降级:git config --global http.version HTTP/1.1
真正卡住的时候,往往不是缓存设得不够大,而是没意识到:拉代码的第一目标不是「拿到全部历史」,而是「拿到能跑起来的最新代码」——--depth 1 就是为此而生的,别硬扛全量。










