git pushが失敗しました:RPCが失敗しました。結果= 22、HTTPコード= 411


127

ブランチは1つだけです。数か月の間、私は

git push origin master

ローカルリポジトリにコミットします。昨夜、ローカルリポジトリにいくつかの小さな変更を加え、同じコマンドを使用してプッシュしようとした後、次のエラーが発生しました。

error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

私はグーグルしてこれこのような質問を見つけましたが、これらの質問に対する答えのどれも私の問題を解決しません。

答えのほとんどは、分離した頭の問題を示唆しています。それでも、頭が離れているとは思いません。また、私は間違ったブランチにいるとは思いません(ブランチが1つしかないので...)

私は何が悪いのかを理解するためにいくつかの実験を行いました、そしてここに私が得た結果があります:

(1)最初に私のgit status出力が来る

# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# egal.aux
# egal.blg
# egal.out
# egal.pdf
# egalcar.aux
# egalcar.blg
# egalcar.pdf
nothing added to commit but untracked files present (use "git add" to track)

(2)と入力するとgit reflog、すべてのローカルコミットが表示されますが、リモートリポジトリが更新されません。

(3)入力するとgit branch -a

* master
  remotes/origin/master

(4)入力するとgit remote show origin

* remote origin
  Fetch URL: http://github.com/CherryQu921/egaldoc_en
  Push  URL: http://github.com/CherryQu921/egaldoc_en
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

出力の最終行(「早送り可能」)は奇妙だと思いますが、何が悪いのかわかりません...


fast-forwardableローカルの変更をリモートブランチにプッシュできることを意味します。何も犯罪ではありません:-)
Maksym Polshcha '29

回答:


292

HTTPまたはHTTPSを使用してGitリポジトリに大きな変更セットをプッシュしようとすると、次のようなエラーメッセージが表示される場合がありますRPC failed; result=22, HTTP code = 411。これは、特定のHTTP操作を1メガバイトに制限するGit構成のデフォルトが原因です。

この制限を変更するには、ローカルリポジトリ内で実行します

git config http.postBuffer *bytes*

ここで、bytesは許可される最大バイト数です。例えば:

git config http.postBuffer 524288000

500MB(@Hengjieに感謝)


52
例はgit config http.postBuffer 524288000500MBです。
Hengjie 2013

9
gitlabを使用している場合は、nginx設定も変更する必要がある場合があります(/etc/nginx/sites-available/gitlab)。詳細:github.com/gitlabhq/gitlabhq/issues/3099
DanielB

それが表示されたらどうなります RPC failed; result=22, HTTP code = 502か?
Dipesh Raichana 2015

2
私はまだ次のエラーgitを受け取っています:RPCが失敗しました。結果= 22、AndroidスタジオのbitbucketでHTTPコード= 504
DJtiwari 2015年

23

これをグローバルに行うこともできます-

git config --global http.postBuffer 524288000

これにより、すべてのローカルリポジトリが最大500 MBのデータをプッシュできるようになります。


3

提供されたソリューションのどれも私たちのために機能しませんでした。解決策のssh代わりにに切り替える必要がありましたHTTPS


2

TortoiseGit for Windowsを使用している場合、最も簡単な方法は統合構成を使用することです。

ファイルエクスプローラーでマウスの左ボタンを押し、TortoiseGit->設定を選択します。情報メッセージを受け入れます。これで、現在のプロジェクトまたはシステムのwhideに対してのみプロパティを構成するかどうかを選択できます。システム全体の設定については、「システム全体のgitconfigを編集」を押して、セクションに次の行を追加します[http]

postBuffer = 524288000

(セクション[http]が存在しない場合は作成してください)


1

22エラーを次のように解決しました。「git clone」コマンドで、user:passwordを指定しませんでした。クローンは機能しましたが、プッシュできませんでした。22エラーの解決策:次のように.git / configのURLを変更します:url = http:// user:pwd @ host / ...その後、プッシュは機能しました。

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