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

时间:2011-09-20 18:17:02

标签: git github git-tower

与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,所以这似乎不是问题。会是什么呢?

18 个答案:

答案 0 :(得分:189)

如果您收到错误413,那么问题不在于git,而在于与您的网络服务器。 这是您的Web服务器阻止大型上传文件。

nginx的解决方案

只需加载nginx.conf并在http块中添加client_max_body_size 50m;(根据需要更改值)。

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

Apache的解决方案

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

我希望这会有所帮助。

答案 1 :(得分:54)

我想通了!当然我会在发布后立即发布!

我将repo设置为使用HTTPS url,我将其更改为SSH地址,一切恢复正常运行。

答案 2 :(得分:36)

更改远程网址的命令(来自https - &gt; git @ ...)是这样的

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

这里的原点是我的遥控器的名称(做git遥控器,你的出处是什么)。

答案 3 :(得分:7)

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

所以我必须设置

client_max_body_size 50m; 

在两个配置文件中:

  • 在gitlab nginx Web服务器上(如前面的答案所述)
  • ,但也在专用服务器上托管的nginx反向代理上。

答案 4 :(得分:6)

我已经在git网址中遇到了“HTTPS //”但是遇到了这个错误。

我所做的就是用push添加选项-u并且它有效。

git push -u origin master

答案 5 :(得分:4)

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

您需要增加uploadReadAheadSize

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

  1. 展开“服务器”字段

  2. 展开网站

  3. 选择要修改的网站。

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

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

  6. 修改uploadReadAheadSize部分(该值必须介于02147483647之间。)

  7. 点击应用

  8. 重新启动网站

答案 6 :(得分:2)

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

git config --global http.postBuffer 157286400

有关更多详细信息,请参见this

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

答案 9 :(得分:1)

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

以下网址适用于Windows

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

而以下URL在Linux机器上有效,并且URL中有https

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

答案 10 :(得分:0)

我有同样的问题(在Win XP上),我将我的Git bin目录中的libcurl-4.dll文件更新为http://www.paehl.com/open_source/?download=curl_DLL_ONLY.7z的SSL版本(重命名为libcurl4.dll)。一切正常。

答案 11 :(得分:0)

面临同样的问题。 在我的例子中,它是访问(拉/推)相同项目的多个用户的不兼容GIT版本。

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

编辑 -

Git for Windows(1.9.5)有一些问题,更新相同可能会有所帮助。

答案 12 :(得分:0)

遇到了同样的问题但是通过清理git存储库解决了这个问题(使用&#34; git clean&#34;清理未跟踪文件)。

答案 13 :(得分:0)

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

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

错误的含义,根据libcurl doc: CURLE_HTTP_RETURNED_ERROR(22)

如果CURLOPT_FAILONERROR设置为TRUE并且HTTP服务器返回错误代码&gt; = 400,则会返回此信息。

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

答案 14 :(得分:0)

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

df.update(pd.concat({'one': df1}))

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

希望,这会有所帮助:)

答案 15 :(得分:0)

您使用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。 现在,您可以愉快地执行推送操作。

答案 16 :(得分:0)

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

答案 17 :(得分:0)

我能够通过在文件 /etc/gitlab/gitlab.rb 中增加以下行 nginx['client_max_body_size'] = 'Xm' 中的大小来解决此问题

X=你的价值。默认值为 250。

更新文件后,运行重新配置命令gitlab-ctl reconfigure