web-dev-qa-db-ja.com

Githubプッシュエラー:RPCが失敗しました。 result = 22、HTTPコード= 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ので、それは問題ではないようです。どうなり得るか?

119
Sneakyness

私はそれを考え出した!!!もちろん、私はポストを打った直後にしたいです!

HTTPS URLを使用するようにレポジトリを設定し、SSHアドレスに変更すると、すべてが問題なく動作するようになりました。

56
Sneakyness

エラー413が発生した場合、この問題はgitではなくWebサーバーでにあります。大きなアップロードファイルをブロックしているのはWebサーバーです。

Nginxのソリューション

Httpブロックにnginx.confをロードし、client_max_body_size 50m;を追加します(必要に応じて値を変更します)。

Sudo service nginx reloadを実行してnginxをリロードし、新しい構成を受け入れてから、http経由でコミットをプッシュしてください。

Apacheのソリューション

httpd.confブロックで、LimitRequestBody 52428800ブロック内に<Directory />を追加します(必要に応じて値を変更します)。これを行うことで、サーバーファイルシステム全体の要求を制限できます。単一の仮想ホストまたはディレクトリだけです。

これがお役に立てば幸いです。

193
Tinou

リモートURLを変更するコマンド(https-> git @ ...から)は次のようなものです

git remote set-url Origin [email protected]:GitUserName/GitRepoName.git

ここのOriginは、リモートの名前です(git remoteを実行すると、Originが表示されます)。

37
kay am see

私は同じ問題を抱えていましたが、逆プロキシを使用していました。

だから私は設定する必要がありました

client_max_body_size 50m; 

両方の設定ファイル内:

  • gitlab nginx Webサーバー(以前の回答の中で述べたように)
  • 専用サーバーでホストされているnginxリバースプロキシでも
8
grimabe

Git URLに既に「HTTPS //」が含まれていましたが、このエラーに直面していました。

私がしたことは、Pushでオプション-uを追加することだけでした。

git Push -u Origin master

6
Jayzcode

IIS 7を使用してgit http/httpsエンドポイントをホストする場合:

uploadReadAheadSizeを増やす必要があります。

起動インターネットインフォメーションサービス(IIS)マネージャー

  1. [サーバー]フィールドを展開します

  2. サイトを展開する

  3. 変更するサイトを選択します。

  4. [機能]セクションで、Configuration Editorをダブルクリックします

  5. Sectionの下で選択:system.webServer > serverRuntime

  6. uploadReadAheadSizeセクションを変更します(値は02147483647の間でなければなりません。)

  7. クリック Apply

  8. Webサイトを再起動します

4
Markus Mauch

大きなサイズの変更をプッシュしているときにこの問題に直面している場合は、ターミナルで以下のコマンドを実行します。

git config --global http.postBuffer 157286400

詳細については、 this を参照してください。

2
vitthal

最初のコミットを新しいBitBucketリポジトリにプッシュしようとしたときに、このエラーが発生しました(error:RPC failed; result = 22、HTTP code = 41)。 BitBucketリポジトリにマスターなしブランチがあるため、エラーが発生しました。 SourceTreeを使用している場合、Git Flowボタンを押すと、Origin上にマスターブランチを作成できます。

1
Ben

Linuxマシンでgitリポジトリを複製しようとすると、この問題が発生しました。

windowsでは次のURLが機能しています

http://[email protected]/scm/project/swamy-main.git

一方、次のURLはLinuxマシンで機能し、URLにhttpsが含まれています

https://[email protected]/scm/project/swamy-main.git
1
Swamy

要旨の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 [email protected]:123456.git

1
Jean Jordaan

同じ問題に直面していた。私の場合、同じプロジェクトにアクセス(プル/プッシュ)している複数のユーザー間で互換性のないGITバージョンでした。

gITバージョンを更新し、Androidスタジオ設定のパスを更新しました。

編集-

Git for Windows(1.9.5)には問題がありますが、同じものを更新すると役立つ場合があります。

0
Vishal

エラーは '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

0
FractalSpace

Sshリンクの代わりにhttpsリンクを使用しますか? 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 [email protected]:[user_name]/[project_name].git

リモートリポジトリ名を決定したら、手順4に直接進みます。これで、Push操作を問題なく実行できます。

0
Zhenjie Yan

同じ問題に直面していましたが、gitリポジトリをクリーンアップすることで解決しました(「git clean」を使用して未追跡ファイルをクリーンアップします)。

0
Darpan

同じ問題がありました(Win XPで)、Git binディレクトリのlibcurl-4.dllファイルを http://www.paehl.com/open_source/?download=curl_DLL_ONLYからSSLバージョンに更新しました.7z (libcurl4.dllに名前を変更)。すべて正常に動作しています。

0
Angus Morgan

リモートURLを ssh またはhttpsに変更する必要があります

git remote set-url Origin [email protected]:laravel/laravel.git

または

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

希望、これが役立つ:)

0
Vikash

https URLを使用してリモートマスターにプッシュすると、同じ問題に遭遇し、SSHアドレスに変更し、すべてが問題なく動作するようになりました。

0
lvjiujin