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

时间:2012-09-29 09:58:02

标签: git github

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

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搜索并找到this onethis one等问题,但这些问题的答案都没有解决我的问题。

大多数答案都表明分离头的问题。但我不认为我的头是分离的。我也不认为我在错误的分支上(因为我只有一个分支......)

我做了一些实验来弄清楚什么是错的,这是我得到的结果:

(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)

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

5 个答案:

答案 0 :(得分:275)

如果您尝试使用HTTP或HTTPS将大量更改推送到Git存储库,则可能会收到错误消息,例如错误:RPC failed; result=22, HTTP code = 411。这是由Git配置默认值导致的,该默认值将某些HTTP操作限制为1兆字节。

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

git config http.postBuffer *bytes*

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

git config http.postBuffer 524288000

500MB(感谢@Hengjie)

答案 1 :(得分:22)

您也可以在全球范围内执行此操作 -

git config --global http.postBuffer 524288000

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

答案 2 :(得分:2)

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

在文件浏览器中按鼠标左键,选择 TortoiseGit - &gt;设置的。接受信息消息。现在,您可以选择是否仅为当前项目或系统配置属性。对于系统范围的配置,按&#34;编辑系统范围的gitconfig&#34;并将下一行添加到[http]部分:

postBuffer = 524288000

[http]部分不存在,创建它)

答案 3 :(得分:2)

所提供的解决方案均不适合我们。我们不得不切换到ssh来完成这项工作,而不是HTTPS解决方案。

答案 4 :(得分:0)

我解决了22错误如下: 在“git clone”命令中,我没有提供用户:密码。 克隆工作,但不是推动。 22错误的解决方案: 修改.git / config这样的url: URL = http://user:pwd@host/ ... 然后,推动工作。