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

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

194797 次浏览

我想出来了! ! ! 当然我会后,我击中职位!

我将回购设置为使用 HTTPS 网址,我将其更改为 SSH 地址,一切恢复正常工作。

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

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

这里起源是我的遥控器的名字(做 git 遥控器,出来的是你的起源)。

错误发生在“ 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

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

如果您得到错误413,那么问题不在于 git 而在于 你的网络服务器。 是你的网络服务器屏蔽了大量的上传文件。

Nginx 解决方案

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

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

Apache 解决方案

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

希望这个能帮上忙。

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

下面的 URL 在 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

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

我所做的是添加选项 -u 与推动,它的工作。

git push -u origin master

Https 克隆的主要内容失败(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

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

你需要增加你的 uploadReadAheadSize

发射 互联网资讯服务经理

  1. 展开“服务器”字段

  2. 扩展网站

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

  4. 在“特性”部分中,双击 Configuration Editor

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

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

  7. Apply

  8. 重新启动网站

当我试图将初始提交推送到一个新的 BitBucket 存储库时,出现了这个错误(Error: RPC 失败; result = 22,HTTP code = 413)。这个错误发生在我身上,因为 BitBucket 回购包含 没有主人分支。如果您正在使用 源树,您可以通过按 Git Flow 按钮在原点上创建一个主分支。

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

所以我不得不

client_max_body_size 50m;

在两个配置文件中:

  • 在 gitlab nginx Web 服务器上(如前面答案中所述)
  • 而且还在 nginx 的反向代理上托管了专有服务器。

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

刚刚更新了 GIT 版本,更新了 Android 工作室设置的路径和它的工作对我来说很好。

编辑-

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

面临着同样的问题,但它通过清理 git 存储库得到了解决(清理未跟踪的文件使用“ git Clean”)。

如果您面临这个问题,同时推动大规模的变化,然后运行以下命令在终端。

git config --global http.postBuffer 157286400

有关详细信息,请参阅 这个

需要将远程 URL 更改为 或 https

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

或者

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

希望,这会有帮助:)

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

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

我可以通过在下面的/etc/gitlab/gitlab.rb 文件中的 nginx [‘ client _ max _ body _ size’] = ‘ Xm’行中增加大小来解决这个问题

X = 你的值。默认值是250。

更新文件后,运行 re-configure 命令 gitlab-ctl reconfigure

对于那些变化不是真正巨大的规模,仍然得到这个错误。 我也犯了同样的错误 error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 你知道是什么拯救了今天吗?

git pull --rebase

在远程回购有变化,而不是在我的本地回购,只是一个简单的 rebase解决了这个问题。讨论误导性错误消息。