Github推送错误:RPC失败;结果= 22,HTTP代码= 413


129

Github正在进行的愚蠢问题。我进行了很多更改(大小约为120MB),当我尝试推送时,会发生以下情况:

error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly 
fatal: The remote end hung up unexpectedly

我已经做完了

git config http.postBuffer 524288000,所以这似乎不是问题。会是什么呢?


3
对于未来的访问者,如果您越来越HTTP code = 0喜欢,GitHub就像昨天一样关闭。
StackExchange用户2013年

3
我知道HTTP code = 0我的代理被阻止了。我的http代理可与github一起使用,但https不适用于公司代理。我认为我的HTTPS代理会强制使用NTLM,而HTTP则接受BASIC。我将回购源URL从https更改为http,它对我有用。git remote set-url origin http://github.com/GitUserName/GitRepoName.git
微粒

Answers:


206

如果出现错误413,则问题不在于git,而是与Web服务器有关。是您的网络服务器阻止了大的上传文件。

Nginx解决方案

只需加载您的代码,nginx.conf然后client_max_body_size 50m;在http块中添加(根据需要更改值)即可。

通过执行重新加载nginx以接受新配置,sudo service nginx reload然后再次尝试通过http推送您的提交。

Apache解决方案

在块内的httpd.conf添加LimitRequestBody 52428800(根据需要更改值)中<Directory />。这样做可以限制整个服务器文件系统(仅单个虚拟主机或目录)的请求。

我希望这有帮助。


1
50m对我来说还不够,但这确实解决了我的问题!谢谢!
凯文C.克鲁克

我也必须在中间的nginx代理上执行此操作。
jperelli

2
如果您不使用Nginx怎么办?
Katianie 2014年

gitlab omnibus安装的任何解决方案..?最新版本12.1
shashwat 2015年

经过大量的搜索,挑衅和哭泣。(
按此

55

我想到了!!!当然,我会在发帖后马上!

我已将存储库设置为使用HTTPS URL,将其更改为SSH地址,然后一切恢复正常。


51
那不是问题的原因。那只是一个解决方法。我想知道为什么它在https上失败。
史蒂夫·沃尔什

4
对我来说ssh不是一个选择。因此,如果您处于@ZincX的相同情况,请参见上面的答案。
Tinou

2
这只是解决方法。Tinou的答案应该是被接受的答案。
2014年

1
你是怎么改变的?
Dainius Kreivys

许多人可能无权访问其Web服务器,因此非常感谢此信息!
马修(Matthew)

38

更改远程URL的命令(从https-> git @ ...)是这样的

git remote set-url origin git@github.com:GitUserName/GitRepoName.git

origin是我的遥控器的名称(请执行git remote,结果便是您的来源)。


2
如果是bitbucket(“克隆”按钮),将其ssh://从中移除时会出现问题,请ssh://git@<bitbucket-repo>:<port>/dir/to/project.git注意,伙计们!
战斗灯

9

我有同样的问题,但我使用的是反向代理。

所以我必须设定

client_max_body_size 50m; 

在两个配置文件中:

  • 在gitlab nginx Web服务器上(如先前答案中所述)
  • 而且还包含在专用服务器上托管的Nginx反向代理上。

gitlab omnibus安装的任何解决方案..?
shashwat


想感谢您提供此解决方案,我已经完成了此设置。
tjeerdnet '18 -10-15

6

我已经在git URL中使用“ HTTPS //”了,但是遇到了这个错误。

我所做的就是通过push添加选项-u,并且有效。

git push -u origin master


4

对于那些使用IIS 7托管git http/ https端点的用户:

你需要增加你的uploadReadAheadSize

启动Internet信息服务(IIS)管理器

  1. 展开服务器字段

  2. 扩展网站

  3. 选择您要对其进行修改的站点。

  4. 在“功能”部分中,双击 Configuration Editor

  5. Section选择下:system.webServer > serverRuntime

  6. 修改该uploadReadAheadSize部分(值必须在0和之间2147483647。)

  7. 请点击 Apply

  8. 重新启动网站


要重新启动该网站,我选择了“ 默认网站”,在右侧的“ 操作”下,有“ 停止”和“ 开始”按钮。
jgoeders 2015年

此修复程序仍需要在IIS 10
jgoeders

2

如果在大尺寸更改时遇到此问题,请在终端下运行以下命令。

git config --global http.postBuffer 157286400

请参阅了解更多详情。


1

错误发生在“ libcurl”中,这是https上传的基础协议。解决方案是以某种方式升级libcurl。要获取有关该错误的更多详细信息,请设置GIT_CURL_VERBOSE = 1

https://confluence.atlassian.com/pages/viewpage.action?pageId=306348908

根据libcurl文档的错误含义:CURLE_HTTP_RETURNED_ERROR(22)

如果CURLOPT_FAILONERROR设置为TRUE,并且HTTP服务器返回的错误代码> = 400,则返回此值。

http://curl.haxx.se/libcurl/c/libcurl-errors.html


1

当我尝试在Linux机器中克隆git repo时遇到了这个问题。

以下网址在Windows中对我有用

http://swamy@git.swamy.com/scm/project/swamy-main.git

而以下网址在Linux计算机中有效,并且网址中包含https

https://swamy@git.swamy.com/scm/project/swamy-main.git

1

当我尝试将初始提交推送到新的BitBucket存储库时,出现了此错误(错误:RPC失败;结果= 22,HTTP代码= 413)。因为BitBucket存储库没有主分支,所以发生了我的错误。如果使用SourceTree,则可以通过按Git Flow按钮在原点上创建一个主分支。


1

您是否使用https链接而不是ssh链接?由于https链接受HttpServer(例如Apache,Ngnix)的上载大小限制,因此在使用ssh时没有这种限制。

使用以下方法切换到ssh链接。

  1. 打开终端。
  2. 切换到项目的工作目录。
  3. 获取远程存储库的名称
$ git remote -v
origin  https://github.com/[user_name]/[project_name].git (fetch)
origin  https://github.com/[user_name]/[project_name].git (push)
  1. 修改git地址为ssh链接。
git remote set-url origin git@github.com:[user_name]/[project_name].git

如果确定了远程存储库名称,请直接继续执行步骤4。现在,您可以愉快地执行推送操作。



0

https gists克隆失败(ssh起作用,请参见下文):

12:00 jean@laptop:~/tmp$ GIT_CURL_VERBOSE=1 git clone https://gist.github.com/123456.git username
Initialized empty Git repository in /home/jean/tmp/username/.git/
* Couldn't find host gist.github.com in the .netrc file; using defaults
* About to connect() to gist.github.com port 443 (#0)
*   Trying 192.30.252.142... * Connected to gist.github.com (192.30.252.142) port 443 (#0)
* found 141 certificates in /etc/ssl/certs/ca-certificates.crt
*        server certificate verification OK
*        common name: *.github.com (matched)
*        server certificate expiration date OK
*        server certificate activation date OK
*        certificate public key: RSA
*        certificate version: #3
*        subject: C=US,ST=California,L=San Francisco,O=GitHub\, Inc.,CN=*.github.com
*        start date: Mon, 30 Apr 2012 00:00:00 GMT
*        expire date: Wed, 09 Jul 2014 12:00:00 GMT
*        issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert High Assurance CA-3
*        compression: NULL
*        cipher: ARCFOUR-128
*        MAC: SHA1
> GET /123456.git/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 301 Moved Permanently
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:51 GMT
< Content-Type: text/html
< Content-Length: 178
< Location: https://gist.github.com/gist/123456.git/info/refs?service=git-upload-pack
< Vary: Accept-Encoding
<
* Ignoring the response-body
* Expire cleared
* Connection #0 to host gist.github.com left intact
* Issue another request to this URL: 'https://gist.github.com/gist/123456.git/info/refs?service=git-upload-pack'
* Couldn't find host gist.github.com in the .netrc file; using defaults
* Re-using existing connection! (#0) with host gist.github.com
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
> GET /gist/123456.git/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 200 OK
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:52 GMT
< Content-Type: application/x-git-upload-pack-advertisement
< Transfer-Encoding: chunked
< Expires: Fri, 01 Jan 1980 00:00:00 GMT
< Pragma: no-cache
< Cache-Control: no-cache, max-age=0, must-revalidate
< Vary: Accept-Encoding
<
* Connection #0 to host gist.github.com left intact
* Couldn't find host gist.github.com in the .netrc file; using defaults
* About to connect() to gist.github.com port 443 (#0)
*   Trying 192.30.252.142... * connected
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
* found 141 certificates in /etc/ssl/certs/ca-certificates.crt
* SSL re-using session ID
*        server certificate verification OK
*        common name: *.github.com (matched)
*        server certificate expiration date OK
*        server certificate activation date OK
*        certificate public key: RSA
*        certificate version: #3
*        subject: C=US,ST=California,L=San Francisco,O=GitHub\, Inc.,CN=*.github.com
*        start date: Mon, 30 Apr 2012 00:00:00 GMT
*        expire date: Wed, 09 Jul 2014 12:00:00 GMT
*        issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert High Assurance CA-3
*        compression: NULL
*        cipher: ARCFOUR-128
*        MAC: SHA1
> POST /123456.git/git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept-Encoding: deflate, gzip
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result
Content-Length: 116

< HTTP/1.1 301 Moved Permanently
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:53 GMT
< Content-Type: text/html
< Content-Length: 178
< Location: https://gist.github.com/gist/123456.git/git-upload-pack
< Vary: Accept-Encoding
<
* Ignoring the response-body
* Connection #0 to host gist.github.com left intact
* Issue another request to this URL: 'https://gist.github.com/gist/123456.git/git-upload-pack'
* Violate RFC 2616/10.3.2 and switch from POST to GET
* Couldn't find host gist.github.com in the .netrc file; using defaults
* Re-using existing connection! (#0) with host gist.github.com
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
> GET /gist/123456.git/git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept-Encoding: deflate, gzip
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result

* The requested URL returned error: 400
* Closing connection #0
error: RPC failed; result=22, HTTP code = 400

这有效: git clone git@gist.github.com:123456.git


OP并没有询问克隆,而是询问了推送。
欧文·布莱克

1
好吧,OP询问了与github的通信。为什么我回答一个关于要点的答案,但我却一无所知。
让·乔丹

哈哈,足够公平了:)
欧文·布莱克

0

面临着同样的问题。在我的情况下,这是访问(拉/推)同一项目的多个用户之间不兼容的GIT版本。

刚刚更新了GIT版本,并更新了Android Studio设置上的路径,并且对我来说工作正常。

编辑-

Windows的Git(1.9.5)出现问题,对其进行更新可能会有所帮助。


0

遇到了同样的问题,但是通过清理git存储库(使用“ git clean”清理未跟踪的文件)解决了。


1
当我执行git clean时,它显示此错误:fatal:clean.requireForce默认为true,并且-i,-n和-f都不给出;拒绝清洁
钱德尼

对于@Chandni和遇到相同错误消息的任何人git都会帮助您自己,git clean -i例如,尝试以交互方式启动。
透过观看

@seethrough-谢谢
Chandni

0

需要将远程URL更改为ssh或https

git remote set-url origin git@github.com:laravel/laravel.git

要么

git remote set-url origin https://github.com/laravel/laravel.git

希望这会有所帮助:)


0

当我使用https url推送到远程主机时,遇到了同样的问题,我将其更改为SSH地址,并且一切恢复正常。

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.