git push失败:RPC失败;结果= 22,HTTP代码= 411


127

我只有一个分支。几个月来我一直在使用

git push origin master

提交到我的本地存储库。昨晚我对本地存储库进行了一些较小的更改并尝试使用相同的命令进行推送后,出现了此错误:

error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

我用Google搜索,发现问题,比如这一个这一个,但没有答案的这些问题解决了我的问题。

大多数答案都暗示了头部脱落的问题。但是我不认为我的头会松动。我也不认为我在错误的分支上(因为我只有一个分支...)

我做了一些实验来找出问题所在,这是我得到的结果:

(1)首先是我的git status输出

# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# egal.aux
# egal.blg
# egal.out
# egal.pdf
# egalcar.aux
# egalcar.blg
# egalcar.pdf
nothing added to commit but untracked files present (use "git add" to track)

(2)输入时git reflog,我可以看到我所有的本地提交,但是远程存储库不会更新。

(3)当我型git branch -a,我得到

* master
  remotes/origin/master

(4)当我型git remote show origin,我得到

* remote origin
  Fetch URL: http://github.com/CherryQu921/egaldoc_en
  Push  URL: http://github.com/CherryQu921/egaldoc_en
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

我认为输出的最后一行(“快速转发”)很奇怪,但是我不确定什么地方出错了...


fast-forwardable意味着您可以将本地更改推送到远程分支机构,而不会犯罪:-)
Maksym Polshcha 2012年

Answers:


292

如果你试图将一个大组更改推到一个Git仓库使用HTTP或HTTPS,你可能会得到一个错误信息,如错误:RPC failed; result=22, HTTP code = 411。这是由Git配置默认设置引起的,该默认设置将某些HTTP操作限制为1 MB。

要更改此限制,请在本地存储库中运行

git config http.postBuffer *bytes*

其中bytes是允许的最大字节数。例如:

git config http.postBuffer 524288000

对于500MB(感谢@Hangjie)


52
一个示例是git config http.postBuffer 524288000500MB。
横街

9
如果您使用的是gitlab,则可能还需要更改nginx配置(/etc/nginx/sites-available/gitlab)。更多信息:github.com/gitlabhq/gitlabhq/issues/3099
DanielB 2013年

如果显示该 RPC failed; result=22, HTTP code = 502怎么办?
Dipesh Raichana

2
我仍然收到以下错误git:RPC失败;result = 22,Android Studio上的bitbucket中的HTTP代码= 504
DJtiwari 2015年

23

您也可以全局执行此操作-

git config --global http.postBuffer 524288000

这将允许所有本地存储库最多推送500MB数据。


3

提供的解决方案均不适合我们。我们不得不改用它ssh来代替HTTPS解决方案。


2

如果您使用Windows的TortoiseGit,最简单的方法是使用集成配置。

在文件浏览器中,按鼠标左键,选择TortoiseGit-> Settings。接受信息消息。现在,您可以选择是否只为当前项目或系统配置属性。对于系统范围的配置,请点击“ edit systemwide gitconfig”,然后在该部分中添加下一行[http]

postBuffer = 524288000

(如果该部分[http]不存在,请创建它)


1

我解决了22个错误,如下所示:在“ git clone”命令中,我没有提供user:password。克隆成功了,但没有成功。解决22错误的方法:像下面这样修改url的.git / config:url = http:// user:pwd @ host / ... ...然后,推送成功了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.