2012-09-29 134 views
108

我只有一个分支。几个月来我一直在使用git推送失败:RPC失败;结果= 22,HTTP代码= 411

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) 

我想输出的最后一行(“快可转发“)是奇怪的,但我不知道有什么问题...

+0

'fast-forwardable'意味着您可以将您的本地更改推送到远程分支,没有犯罪行为:-) –

回答

246

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

要改变这种限制本地资源库

git config http.postBuffer *bytes* 

其中字节是允许的最大字节数内运行。对于〔实施例:

git config http.postBuffer 524288000 

为500MB(感谢@Hengjie)

+1

正确!谢谢! – CherryQu

+50

例如'git config http.postBuffer 524288000'为500MB。 – Hengjie

+9

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

22

你也可以做到这一点全球 -

git config --global http.postBuffer 524288000 

这将允许所有本地回购协议推高到数据的500MB。

2

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

在文件资源管理器中按住鼠标左键,选择TortoiseGit - >设置。接受信息消息。现在,您可以选择是否仅为当前项目或系统配置属性。对于系统级配置按“编辑系统范围gitconfig”,并在下一行添加到部分[http]

postBuffer = 524288000 

(这部分[http]不存在,创建它)提供

2

无解的工作了我们。我们不得不切换到ssh,而不是HTTPS解决方案。

0

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