Skip to main content

Git Push 失败:HTTP 400 错误的解决方案

问题描述

在使用 Git push 上传约 2MB 的图片时,遇到了以下错误:

Git: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400

这个问题通常发生在 Git 传输过程中,当 Git 发送的数据超过 HTTP 允许的请求大小时,就会出现 HTTP 400 错误。

问题分析

可能导致该问题的原因包括:

  1. Git 传输缓冲区太小 Git 默认的 HTTP 传输缓冲区较小,导致上传较大文件时失败。

  2. 远程仓库的 HTTP 限制 部分 Git 服务器(如 GitHub、GitLab)对 HTTP 请求大小有限制,导致数据传输失败。

  3. 网络问题 网络连接不稳定可能导致请求失败,尤其是在 HTTP 方式上传 时。

  4. Git 版本较旧 旧版本的 Git 可能不兼容远程仓库的最新协议。

解决方案

方法 1:增加 Git 允许的 HTTP 请求缓冲区(已成功解决)

在终端执行以下命令,增大 Git 的 HTTP 传输缓冲区:

git config --global http.postBuffer 524288000  # 设置为 500MB
git config --global http.maxRequestBuffer 100M # 设置为 100MB

然后再次尝试推送代码。 🔹 适用于: 由于 Git 传输缓冲区过小导致的问题。

方法 2:切换到 SSH 推送(如果 HTTP 限制仍然存在)

如果远程仓库支持 SSH,可以尝试改用 SSH 方式上传,避免 HTTP 限制。

检查当前远程仓库 URL:

git remote -v

如果显示的是 https://github.com/your-repo.git,说明你正在使用 HTTP。

切换到 SSH:

git remote set-url origin [email protected]:your-repo.git

再次尝试推送。

🔹 适用于: 解决 HTTP 方式的请求限制,提高传输稳定性。

方法 3:升级 Git(避免版本兼容性问题)

如果你的 Git 版本较旧,可以尝试升级 Git:

# macOS
brew upgrade git

# Ubuntu
sudo apt update && sudo apt install git

# Windows
# 下载最新 Git 并安装:https://git-scm.com/downloads

然后重新尝试推送。

🔹 适用于: 旧版本 Git 导致的传输失败。