1. ホーム
  2. ギット

[解決済み】gitクローン作成中にリモートエンドが予期せずハングアップした。

2022-03-25 03:18:54

質問

私の git のクライアントは、しばらくリポジトリのクローンを試みた後、次のようなエラーで繰り返し失敗します。

ここで何が問題なのでしょうか?

注意 GITのホスティングプロバイダーにSSHキーを登録しました。

Receiving objects:  13% (1309/10065), 796.00 KiB | 6 KiB/s
fatal: The remote end hung up unexpectedly

解決方法は?

クイックソリューション

この種のエラーでは、私は通常、まず postBuffer のサイズを指定します。

git config --global http.postBuffer 524288000

(以下のコメントで、値を2倍にしなければならないとの報告があります)。

git config --global http.postBuffer 1048576000

(以下 npm publish , マーティン・ブラウン 報道 コメント欄 デフォルトの1,000,000ではなく、50,000,000以下に設定すること)

###詳しい情報

から git config マンページ , http.postBuffer はについてです。

リモートシステムにデータを POST する際に、スマート HTTP トランスポートが使用するバッファの最大サイズ (バイト)。

このバッファサイズより大きなリクエストに対しては、HTTP/1.1と Transfer-Encoding: chunked は、ローカルに巨大なパックファイルを作成するのを避けるために使用されます。デフォルトは1MiBで、ほとんどのリクエストに十分対応できます。

クローンでもその影響はあり、この例では OPジョー の報告があります。

[クローン]は正常に動作するようになりました


注意:サーバー側で何か問題が発生し、サーバーがGit 2.5+ (Q2 2015)を使用している場合、エラーメッセージはより明確なものになる可能性があります。

"をご覧ください。 Gitクローン作成:リモート側が予期せずハングアップしたため、変更を試みる postBuffer が、まだ失敗している "。


クーライ ( コメント中 )が指摘する この Atlassian Troubleshooting Git ページは を追加しています。

<ブロッククオート

Error code 56 は、curl の受信エラー CURLE_RECV_ERROR これは、クローン作成中にデータの受信を妨げる何らかの問題があったことを意味します。

一般的には、ネットワーク設定、ファイアウォール、VPNクライアント、アンチウィルスなどが原因で、すべてのデータが転送される前に接続が終了してしまうことが原因です。

また、デバッグ作業を支援するために、以下の環境変数についても言及しています。

# Linux
export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1

#Windows
set GIT_TRACE_PACKET=1
set GIT_TRACE=1
set GIT_CURL_VERBOSE=1


Git 2.25.1 (2020年2月) では、このことについて詳しく知っていますね。 http.postBuffer "ソリューション"です。

参照 コミット 7a2dc95 , コミット 1b13e90 (2020年1月22日)による ブライアン・M・カールソン ( bk2204 ) .

(によって統合されました。 ジュニオ・C・ハマノ--。 gitster -- コミット 53a8329 , 2020年1月30日)

( Git メーリングリストの議論 )

<ブロッククオート

docs : http.postBufferを増加させることが有益である場合について言及します。

<上 署名: Brian M. Carlson

<ブロッククオート

HTTPプッシュの問題は、さまざまな場面でユーザーが直面するものです。

このような問題は、ウイルス対策ソフトやプロキシのフィルタリング、その他の中間者的な状況によるものが多く、また、ネットワークの単純な信頼性の低さが原因である場合もあります。

しかし、ネット上で見られるHTTPプッシュの問題に対する一般的な解決策は、http.postBufferを増やすことです。

これは、前述のいずれの状況でも機能せず、ごく少数の非常に限定されたケースでのみ有効です。基本的には、接続が HTTP/1.1 を適切にサポートしていない場合です。

この値を上げることが適切な場合と、それが実際に何をするのかを文書化し、プッシュの問題に対する一般的な解決策として、この値を使用することを思いとどまらせてください。

ということで git config http.postBuffer が含まれるようになりました。

http.postBuffer

<ブロッククオート

リモートシステムにデータを POST する際にスマート HTTP トランスポートが使用するバッファの最大サイズ (バイト)。

このバッファサイズより大きなリクエストに対しては、ローカルに巨大なパックファイルを作成しないように、HTTP/1.1 と Transfer-Encoding: chunked が使用されます。

デフォルトは1MiBで、ほとんどのリクエストに対応できます。

この制限値を上げることは、転送のチャンクエンコーディングを無効にする場合にのみ有効であることに注意してください。したがって、リモートサーバーまたはプロキシが HTTP/1.0 にのみ対応しているか、HTTP 標準に準拠していない場合にのみ使用する必要があります。

これを上げることは、一般に、ほとんどのプッシュの問題に対して有効な解決策ではなく、小さなプッシュでもバッファ全体が割り当てられるため、メモリ消費を大幅に増加させる可能性があります。 .