平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Git Push失败:HTTP 413 Request Entity T……”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
实际处理时,在采用 Git 推送包含较大编译产物的项目时,你是否遇到过 HTTP 413 Request Entity Too Large 错误?这通常同时不是 Git 的问题,而是 Web 服务器(如 Nginx)拒绝接收大体积请求。本文将借助一个完整案例,演示如何采用 curl 工具验证服务器限制,最后借助宝塔面板修改 Nginx 设置解决问题,实现大文件 Git 推送成功。适用来采用 Gitblit、Gitea 或任何基于 Nginx 部署的私有 Git 服务环境。
在采用 Git 推送一个包含编译产物的仓库时,推送失败,报错如下所示:
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
Git GUI (SourceTree) 中显示:
POST git-receive-pack (287021804 bytes)
error: RPC failed; HTTP 413

从实现思路看,HTTP 413 代表“请求体过大”,通常是服务端拥有上传大小限制。可能的源有两个:
为便于确认问题所在,我们进行下面的演示性测试。
在 PowerShell 中执行:
fsutil file createnew bigfile.test 314572800
curl.exe -v -X POST http://域名/ -H "Expect:" --data-binary "@bigfile.test"
HTTP/1.1 413 Request Entity Too Large
Server: nginx
确认限制来自 Nginx,Git 本身无问题。

fsutil file createnew smallfile.test 1024
理解这一步时,重复 curl POST 测试,结果成功,显示 Gitblit 网页内容,证明小文件能正常处理。

http { 块,加入:client_max_body_size 512m; # 允许最大上传体积为 512MB

http {
include mime.types;
default_type application/octet-stream;
client_max_body_size 512m;
sendfile on;
keepalive_timeout 60;
...
}
理解这一步时,设置重载后,再次执行 Git push,推送包大小达 274MB,已成功,问题解决。

| 操作步骤 | 结果 |
|---|---|
| curl 模拟上传 bigfile.test | 报 413,确认 Nginx 限制 |
| curl 上传 smallfile.test | 成功得到 Gitblit 页面 |
| 修改 Nginx 设置 | 重载后 push 成功 |
.gitignore或 Git LFS 管理大文件从实现思路看,以上就是Git Push失败:HTTP 413 Request Entity Too Large的问题排查和完整解决方法的详细内容,更多关于Git Push失败:HTTP 413 Request Entity Too Large的资料请关注脚本之家其它相关文章!