web-dev-qa-db-ja.com

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

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 ターミナルに戻ります。

124
Stephen Melvin

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

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

HTTPエラーコードは私をバックアップしているようです、それは「長さが必要です」エラーです。したがって、計算するには大きすぎるか、最大値を超えている可能性があります。知るか。

編集

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

そこで、次の構成変更を追加しました

git config http.postBuffer 524288000

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

編集を終了

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

お役に立てれば。

275
Will

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

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
Nikita Pushkar

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

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

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

注: Smart HTTP Support は、認証ベースのエンタープライズファイアウォールプロキシの背後にいる私たちにとって大したことです!

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

古いクライアントも古い、効率の悪い方法にフォールバックするので、何も破られることはありません-新しいクライアントだけがうまく動作するはずです。

繰り返しますが、Gitクライアントを最初にアップグレードしてください。

3
VonC

私にとっては、Bashの代わりにGit GUIからプッシュすることができます。

1
Vitaly Leskiv

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

他の混乱しているもののために:

どうして?私の場合、アセットといくつかのPSDを含む大きなZipファイルがプッシュされました。

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

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

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

0
BananaAcid