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
モート

回答:


206

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

nginxのソリューション

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

nginxをリロードして実行して新しい設定を受け入れ、sudo service nginx reloadもう一度http経由でコミットをプッシュしてみます。

Apacheのソリューション

あなたにはhttpd.conf、追加LimitRequestBody 52428800の内側(あなたのニーズに値を変更)<Directory />ブロック。これを行うと、サーバーファイルシステム全体、単一の仮想ホストまたはディレクトリのみのリクエストを制限できます。

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


1
50mでは足りませんでしたが、これで問題は解決しました!ありがとう!
ケビンC.クリンク2013

中間のnginxプロキシでもそれを行わなければなりませんでした。
jperelli 2013

2
Nginxを使用していない場合はどうなりますか?
Katianie 2014年

gitlab omnibusのインストールのためのソリューション..?最新バージョン12.1
shashwat

多くの検索、口論、そして泣いた後。(その順序で)
埋め込ま

55

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

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


51
それが問題の理由ではありません。それは単なる回避策です。httpsで失敗する理由を知りたい。
スティーブウォルシュ

4
私にとって、sshはオプションではありません。したがって、同じ状況@ZincXの場合は、上記の私の回答を参照してください。
ティヌー2013

2
これは単なる回避策です。ティヌーの答えは受け入れられた答えでなければなりません。
ベン

1
どうやってそれを変えたの?
Dainius Kreivys 2016

多くの人はおそらくWebサーバーにアクセスできないので、この情報は大歓迎です!
マシュー

38

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

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

ここでの起源は私のリモートの名前です(git remoteを実行すると、出てくるのはあなたの起源です)。


2
bitbucket( 'Clone'ボタン)ssh://から削除するときに問題が発生しましたssh://git@<bitbucket-repo>:<port>/dir/to/project.git
fightlight 2018年

9

同じ問題がありましたが、リバースプロキシを使用していました。

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

client_max_body_size 50m; 

両方の設定ファイル内:

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

gitlab omnibusのインストールのためのソリューション..?
shashwat

:たぶんオムニバス/ nginxのconfに見とる gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/...
grimabe

この解決策に感謝したかったのですが、私はまさにこの設定でした。
tjeerdnet 2018年

6

私はすでにgit URLに「HTTPS //」がありましたが、このエラーに直面しました。

私がしたことは、プッシュでオプション-uを追加することだけで、それは機能しました。

git push -u origin master


4

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

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

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

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

  2. サイトを展開

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

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

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

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

  7. クリック Apply

  8. ウェブサイトを再起動します


再起動するウェブサイトは、私が選択した既定のWebサイトをして右側に、下のアクションがあるストップスタートボタンが。
jgoeders、2015年

この修正は、まだIIS 10で必要とされた
jgoeders

2

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

git config --global http.postBuffer 157286400

詳細はこちらをご覧ください。


1

このエラーは、httpsアップロードの基本プロトコルである「libcurl」で発生します。解決策は、どういうわけか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サーバーが400以上のエラーコードを返した場合に返されます。

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


1

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

次の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

1

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


1

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 git@github.com:[user_name]/[project_name].git

リモートリポジトリの名前がわかったら、直接ステップ4に進みます。これで、プッシュ操作を楽しく行うことができます。



0

gistsの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


OPはクローンについてではなく、プッシュについて質問しました。
Owen Blacker

1
さて、OPはgithubとの通信について尋ねました。なぜ私が要点についての回答で答えたのかはわかりません。
Jean Jordaan

ああ、十分に公正です:)
Owen Blacker

0

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

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

編集-

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


0

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


1
git cleanを実行すると、次のエラーが表示されます。fatal:clean.requireForceのデフォルトはtrueで、-i、-n、-fのいずれも指定されていません。清掃を拒否
チャンドニ

@Chandniと同じエラーメッセージgitに直面している人はgitが自分自身を助けるgit clean -iため、たとえばインタラクティブモードで起動してみてください。
18

@seethrough -感謝
チャンドニー

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アドレスに変更すると、すべてが問題なく動作し始めました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.