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

136

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

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

我在谷歌上搜索了一下,找到了这个问题这个问题等等,但是这些问题的答案都没有解决我的问题。

大多数答案都建议检查已分离的头部的问题。然而,我不认为我的头部是已分离的。我也不认为我在错误的分支上(因为我只有一个分支...)

我进行了一些实验来找出问题所在,以下是我得到的结果:

(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")很奇怪,但是我不确定哪里出了问题...


fast-forwardable 的意思是你可以将本地更改推送到远程分支,没有任何不当行为 :-) - Maksym Polshcha
6个回答

313

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

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

git config http.postBuffer *bytes*

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

git config http.postBuffer 524288000

对于500MB(感谢@Hengjie)


54
一个例子是 git config http.postBuffer 524288000,表示500MB。 - Hengjie
10
如果您正在使用GitLab,则可能需要更改nginx配置文件(/etc/nginx/sites-available/gitlab)。更多信息请参见:https://github.com/gitlabhq/gitlabhq/issues/3099 - DanielB
如果显示RPC failed; result=22, HTTP code = 502怎么办? - Dipesh Raichana
2
我在Android Studio的Bitbucket上仍然收到以下错误 git: RPC 失败; result=22, HTTP code = 504。 - DJtiwari

26

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

git config --global http.postBuffer 524288000

这将允许所有本地仓库推送高达500MB的数据。


4

我们尝试了所有提供的解决方案,但都无法解决问题。最终我们不得不使用 ssh 代替 HTTPS 来使其正常工作。


2
如果您正在使用Windows的TortoiseGit,最简单的方法是使用集成配置。在文件资源管理器中按下左键,选择“TortoiseGit->设置”。接受信息提示。现在,您可以选择是否仅为当前项目或整个系统配置属性。要进行系统范围的配置,请点击“编辑系统范围gitconfig”,并将下一行添加到[http]部分中:
postBuffer = 524288000

如果不存在 [http] 这一部分,则创建它。


1
我解决了22错误,方法如下: 在“git clone”命令中我没有提供用户名和密码。 克隆成功了,但推送失败了。 22错误的解决方案: 修改.git/config文件中的url,像这样: url=http://user:pwd@host/... 然后,推送就可以正常工作了。

-2

使用 Git LFS 跟踪大于 1MB 的文件,然后再尝试推送。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接