使用SourceTree推送Git代码失败,报远程端意外挂断等错误
解决Git推送时HTTP 413 Request Entity Too Large错误
这个错误(HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large)本质是你推送的内容体积超过了服务器或中间代理允许的最大请求尺寸,结合你给出的日志里POST git-receive-pack (1141901 bytes)来看,这个大小其实不算特别大,大概率是Git客户端默认的推送缓存不够,或者服务器端限制比较严格。下面是几个实用的解决办法:
1. 增大Git客户端的HTTP推送缓存
这是最快速的解决方式,直接调整Git的http.postBuffer参数,让客户端能处理更大的推送请求:
- 全局生效(所有本地仓库都适用):
这里设置的是500MB,完全能覆盖你这次的推送大小。如果只是当前仓库有问题,去掉git config --global http.postBuffer 524288000--global,在仓库根目录执行命令即可。
2. 拆分体积过大的提交
如果调大缓存后还是报错,那可能是某次提交里包含了大文件(比如安装包、未压缩的图片等)。你可以先用这个命令排查哪个提交带了大文件:
git log --stat
找到对应的提交后,用交互式变基拆分它:
git rebase -i HEAD~3 # 3代表要修改最近3个提交,按需调整数字
在弹出的编辑器里,把目标提交的pick改成edit,保存退出后,用git reset HEAD^撤销该提交,然后分批次添加文件并重新提交,最后推送到远程。
3. 调整服务器/代理的请求大小限制(有权限时操作)
如果是你自己维护的Git服务器(比如GitLab、Gitea,或者用Nginx/Apache托管的仓库),需要修改对应的配置:
- Nginx环境:找到Nginx的配置文件,添加或修改
client_max_body_size参数,比如:
保存后重启Nginx服务。client_max_body_size 100M; - GitLab环境:编辑
/etc/gitlab/gitlab.rb,调整以下两个参数:
执行nginx['client_max_body_size'] = '100M' gitlab_rails['git_max_size'] = 104857600 # 100MB对应的字节数gitlab-ctl reconfigure和gitlab-ctl restart使配置生效。 - 如果你使用了公司的反向代理,可能需要联系运维团队调整代理服务器的最大请求限制。
先从第一个方案试起,绝大多数情况下调大http.postBuffer就能解决问题。如果还是不行,再逐步排查大文件提交或服务器端的限制。
内容的提问来源于stack exchange,提问作者Mayur
相关产品推荐
相关产品推荐

