Git推送遇RPC failed/HTTP 400错误,请求解决方法
问题重现
执行命令 git push -u origin main 时出现以下错误,同时提示 Everything up-to-date:
error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
可行解决方案
验证远程仓库URL正确性
执行git remote -v查看当前配置的远程地址,确认无拼写错误(比如多余字符、协议错误)。若地址有误,用git remote set-url origin <正确仓库URL>修正。切换至SSH协议推送
若当前使用HTTPS协议,换成SSH可规避HTTP 400问题。先生成并配置SSH密钥到远程仓库,再执行git remote set-url origin git@<仓库地址>.git切换协议,重新尝试推送。清理Git本地缓存
本地缓存异常可能导致推送失败,执行以下命令后重试:git gc --prune=now git repack git push -u origin main检查分支关联状态
执行git branch -vv查看本地main分支是否已与origin/main关联。若未关联,先执行git fetch origin拉取远程最新状态,再重新执行推送命令。确认仓库权限与分支规则
检查是否拥有main分支的推送权限,同时确认远程仓库是否开启分支保护(如需PR合并、CI校验等),满足限制条件后再推送。处理大文件问题
若仓库存在大文件,即使调整了http.postBuffer也可能失败:# 查找仓库内大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')" # 移除不需要的大文件并强制推送 git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <大文件路径>' --prune-empty --tag-name-filter cat -- --all git push -u origin main --force
内容的提问来源于stack exchange,提问作者Mohit Sapat

