githubにコミットをプッシュするとGitが失敗する


130

githubでホストしているgitリポジトリをラップトップに複製しました。いくつかのコミットを問題なくgithubにプッシュすることができました。しかし、今私は次のエラーを受け取ります:

Compressing objects: 100% (792/792), done.
error: RPC failed; result=22, HTTP code = 411
Writing objects: 100% (1148/1148), 18.79 MiB | 13.81 MiB/s, done.
Total 1148 (delta 356), reused 944 (delta 214)

ここからハングするだけで、ようやくCTRL+Cにターミナル戻る必要があります。


なぜHTTPエラーがあるのですか?SSH経由でgithubにプッシュしませんか?
Cascabel 2010

明確にするために:のoriginセクションのURLは.git/confighttpを言わないのですか?
Cascabel 2010

@Jefromi読み取り/書き込みのhttpリンクを使用してプライベートリポジトリを複製しました。
スティーブンメルビン

いいえ、httpsと表示されています。失敗する前に2つのプッシュを実行できたので、これは奇妙です。
Stephen Melvin

回答:


292

私は同じ問題を抱えていて、プッシュしようとしているレポのサイズ(編集済みまたは特定のファイルのサイズ)に関係していると考えています。

基本的に、私は新しいレポジトリを作成してそれらをgithubにプッシュすることができました。しかし、既存のものは機能しません。

HTTPエラーコードは、「必要な長さ」エラーであることを裏付けているようです。だから多分それは計算するには大きすぎるか、最大値を超えています。知るか。

編集

問題はファイルが大きい可能性があることを発見しました。その時点までのプッシュが成功したにもかかわらず、プッシュしない更新が1つありました。コミットにはファイルが1つしかありませんでしたが、たまたま1.6Mでした

だから私は次の設定変更を追加しました

git config http.postBuffer 524288000

最大500Mのファイルサイズを許可すると、私のプッシュが機能しました。これは、最初はHTTPプロトコルを介して大きなリポジトリをプッシュする際の問題であった可能性があります。

編集を終了

動作させるには(postBufferを変更する前に編集)、リポジトリをtarで圧縮し、ssh経由でgitを実行できるマシンにコピーして、githubにプッシュします。次に、元のサーバーからプッシュ/プルしようとすると、httpsで動作するはずです。(元のプッシュよりもはるかに少ないデータ量であるため)。

お役に立てれば。


411ではなくHTTP 501エラーが発生しましたが、私にとってもうまくいきました。ありがとうございます。
Emaad Ahmed Manzoor 2011

ありがとう!これでうまくいき、アップロードのスピードも上がりました。Webサイトを新しいWindows Azure Webサイトにプッシュしようとしていましたが、失敗し続けました。
Jake

23
この値を非常に高く設定することの欠点はありますか?
snogglethorpe 2013

@snogglethorpe潜在的に:「転送エンコード:チャンクは、ローカルで大規模なパックファイルの作成を回避するために使用されます」。値を大きな値に設定すると、プッシュしようとしたときに大量のパックファイルが生成される可能性があります。すべてのファイルシステムが大量のファイルを適切に処理できるわけではなく、効率的に整理できない場合があります。これらのファイルは.git / objects / packにあります。
麻の

を変更することhttp.postBufferは、有害というよりは不必要ですが、マイナスの副作用があります。これをデフォルトより大きくすると、大きなプッシュのレイテンシが増加する可能性があります(クライアントがHTTPリクエストを大きなチャンクにバッファするため)。
Swatantra Kumar

8

このコマンドが役に立たない場合

git config http.postBuffer 524288000

sshメソッドをhttpsに変更してみてください

git remote -v
git remote rm origin 
git remote add origin https://github.com/username/project.git

4

サーバーの問題(つまり、「GitHub」の問題)のように見えます。このスレッド
を見ると、が破損したヒープを取得したときに発生する可能性があります(そして、それらはスマートhttpサポートを配置しだけなので...) しかし、実際の原因が何であれ、最近の散発的な混乱と関連している可能性がありますGitHubファイルサーバーの1つgit-http-backend

このエラーメッセージが引き続き表示されますか?あなたがそうするので:

  • ローカルのGitバージョンを確認してください(そして最新のバージョンにアップグレードしてください)
  • これをGitHubバグとして報告します。

注:スマートHTTPサポートは、認証ベースのエンタープライズファイアウォールプロキシの背後にいる私たちにとって大きな問題です!

これ以降、http://URL 経由でリポジトリを複製し、Gitクライアントバージョン1.6.6以降を使用している場合、Gitは自動的に新しい、より優れたトランスポートメカニズムを使用します。
ただし、さらに驚くべきことは、そのプロトコルをプッシュして、プライベートリポジトリも複製できるようになったことです。プライベートリポジトリにアクセスする場合、またはコラボレーターでプッシュアクセスを希望する場合は、URLにユーザー名を入力すると、Gitからアクセスしようとするとパスワードの入力を求められます。

古いクライアントも古い、効率の悪い方法にフォールバックするため、何も壊れるべきではありません。新しいクライアントがよりうまく機能するはずです。

そのため、最初に必ずGitクライアントをアップグレードしてください。


ADSLワイヤレスルーター(French Orange Livebox)の背後でも同様の問題が発生しました。別のインターネットアクセスを使用するまで、github.comでSSHキーを公開できません。
Yves Martin

スマートHTTPサポートは、「エラー:RPCが失敗しました;結果= 22、HTTPコード= 0」をプッシュしようとしたときにファイアウォールプロキシを通り抜けました。
Boggin 2013年

@Bogginはい、プロキシの背後にある場合、smart httpが一般的に推奨される選択です。標準のhttp / httpsポートは(ほぼ)常に開いています。
VonC 2013年


0

私は自分のホスト型bonobo-gitサーバーにプッシュしようとしましたが、http.postbufferがプロジェクトディレクトリを意味していることに気付きませんでした...

だから他の混乱したもののために:

どうして?私の場合、アセットを含む大きなzipファイルがあり、一部のPSDもプッシュされていました。

これを行う方法http.postbuffer:サーバーではなく、.gitフォルダーの隣のプロジェクトsrcディレクトリ内でそのコマンドを実行します。

大きな一時(チャンク)ファイルはそのバッファサイズで作成されることに注意してください。

注:最大のファイルを確認してから、バッファを設定してください。


-2

プッシュする問題のほとんどは、プッシュする必要があるファイルのサイズが原因です。私はちょうど2 mbのサイズのいくつかのライブラリをプッシュしようとしていましたが、プッシュも結果7でRPCのエラーを出していました。ラインは4 mbpsであり、正常に動作しています。その後のいくつかのプッシュの試みは私に成功をもたらしました。このようなエラーが発生した場合は、数分待ってから試行を続けてください。

また、githubがダウンしているか、ネットワークが不安定になると、RPCの障害が発生することもわかりました。

そのため、一定の間隔を置いて試してみることが唯一の選択肢です!


-2

これらの場合、httpsがスタックしている場合はsshを試すことができます。

また、バッファサイズを天文学的な数値に増やして、バッファサイズを気にする必要がないようにすることもできます。git config http.postBuffer 100000000

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