エラー:RPCが失敗しました。カール転送は閉じられており、未処理の読み取りデータが残っています


128

GitLab(GitLab 6.6.2 4ef8369)からリポジトリのクローンを作成しようとすると、エラーが発生します。

ここに画像の説明を入力してください

remote: Counting objects: 66352, done.
remote: Compressing objects: 100% (10417/10417), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

このエラーを回避する方法は?

回答:


222

それは頻繁に発生します。インターネット接続が遅いため、かなり巨大なgitリポジトリのクローンを作成する必要があります。最も一般的な問題は、接続が閉じ、クローン全体がキャンセルされることです。

Cloning into 'large-repository'...
remote: Counting objects: 20248, done.
remote: Compressing objects: 100% (10204/10204), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining 
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

多くの試行錯誤と多くの「リモートエンドが予期せずハングアップした」後、私は私のために働く方法を持っています。まず、浅いクローンを作成してから、その履歴でリポジトリを更新します。

$ git clone http://github.com/large-repository --depth 1
$ cd large-repository
$ git fetch --unshallow

10
これは、SSHに切り替えずに問題の回避策を説明する唯一の回答です。これはうまくいきました、ありがとう!
ガリー

14
ここでのキーは--depth 1and --unshallowです。これはまた、低速接続で、既存のレポをフェッチするために動作します:git fetch --depth 1その後git fetch --unshallow
Andrew T.

1
@AndrewT。を明確にするために、このgit fetch --unshallowコマンドはgit clone?よりも寛容な方法で接続の喪失を扱います。そして、それがここで違いを生むのですか?
ローウェル、

2
今、git fetch --unshallowコマンドはRPC failed;エラーを出します
ms_27

1
私のために働いていませんでした。で失敗しましたgit fetch --unshallow。私のリポジトリは、このアプローチでも大きすぎると思います。SSHのみが機能しました。
ジョナサンカブレラ

59

数日後、今日私はこの問題を解決しました。sshキーを生成します。この記事に従ってください:

https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

それを宣言する

  1. Gitプロバイダー(私が使用しているGitLab、GitHub)。
  2. これをローカルIDに追加します。

次に、コマンドでクローンを作成します。

git clone username@mydomain.com:my_group/my_repository.git

エラーは発生しません。

上記の問題

エラー:RPCが失敗しました。カール18転送は閉じられ、未処理の読み取りデータが残っています

HTTPプロトコル(curlコマンド)によるクローン作成時にエラーが発生するためです。

そして、あなたはバッファサイズを増やすべきです:

git config --global http.postBuffer 524288000

7
HTTPからSSHに変更してください。設定http.postBufferが機能しませんでした。
thangdc94 2017年

それでもエラーが発生する場合は、ssh構成ファイルvi /users/username/.ssh/configを編集してserverAliveInterval 120を追加し、wqを使用してviを終了します(保存して終了)。これにより、サーバーがタイムアウトおよび接続切断エラーになるのを実際に防ぐことができます。
Tanvir Singh

それはいいのですが、100%複製されたときになぜそれが起こるのか誰でも知っていますか?
workplaylifecycle

変更http.postBufferは私のために働きました-ありがとう!
Negar Zamiri

ありがとう、それは私にとってはうまくいきます、この解決策はもっと賛成票を
投じる

17

リモートからクローンを作成しようとすると、同じ問題が繰り返し発生しました。

remote: Counting objects: 182, done.
remote: Compressing objects: 100% (149/149), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

最後にこれは私のために働きました:

git clone https://username@bitbucket.org/repositoryName.git --depth 1

3
--depth 1の機能
Wahdat Kashmiri

私にとってはうまくいきました。
vijay junupalli

ソースリポジトリが完全な場合は、浅いリポジトリを完全なリポジトリに変換し、浅いリポジトリによって課されるすべての制限を削除します。ソースリポジトリが浅い場合は、可能な限りフェッチして、現在のリポジトリがソースリポジトリと同じ履歴を持つようにします。
RahmanRezaee

6

これらの手順は私のために働きました:のgit://代わりに使用https://


3
Stack Overflowへようこそ。あなたのソリューションを試したい人が簡単にできるように、もう少し詳細な答えを提供してみてください。
マクマトン2018

実際、この回答はこのスレッドの次の回答よりも具体的です..
xxxvodnikxxx

5

簡単な解決策:httpsを介して複製するのではなく、sshを介して複製します。

例えば:

git clone https://github.com/vaibhavjain2/xxx.git - Avoid
git clone git@github.com:vaibhavjain2/xxx.git - Correct

はい。私はWindowsユーザーです。
Vaibhav Jain

5

ネットワーク接続の問題。
永続的な接続タイムアウトが原因である可能性があります。
最善の方法は、別のネットワークに変更することです。


5

圧縮をオフにする必要があります:

git config --global core.compression 0

次に、浅いクローンを使用する必要があります

git clone --depth=1 <url>

次に、最も重要なステップは、クローンプロジェクトにcdすることです

cd <shallow cloned project dir>

今度は段階的にクローンを開いてください

git fetch --depth=N, with increasing N

例えば。

git fetch --depth=4

その後、

git fetch --depth=100

その後、

git fetch --depth=500

このNを置き換えることで、必要なステップ数を選択できます。

そして最後に、残りのリビジョンをすべてダウンロードして、

git fetch --unshallow 

それがあなたを助けるかどうか賛成:)


4

上記のように、最初にbashからgitコマンドを実行し、最初に拡張ログディレクティブを追加します。 GIT_TRACE=1 GIT_CURL_VERBOSE=1 git ...

たとえば、GIT_CURL_VERBOSE=1 GIT_TRACE=1 git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin これにより詳細なエラー情報が表示されます。


2

私と一緒にこの問題が発生したのは、プロキシ設定が原因です。プロキシ例外にip gitサーバーを追加しました。gitサーバーはローカルでしたが、no_proxy環境変数が正しく設定されていませんでした。

このコマンドを使用して問題を特定しました。

#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

私にとっての問題は、クローン全体が完了する前に接続が閉じることでした。無線LAN接続の代わりにイーサネットを使用しました。その後、それは私のために解決します



1

このエラーは、低速または問題のあるインターネット接続で発生する可能性が高いようです。良好なインターネット速度で接続しているので、問題なく動作します。


0

この問題は、プロキシの問題またはネットワークが遅い場合に発生します。深度ソリューションを使用するか、

git fetch --all  or git clone 

    

この所与のエラー場合はカール56のrecv失敗が続いたzipを経由してファイルをダウンロードしたりするのではなく、ブランチの名前をspicify --all

git fetch origin BranchName 


-6

これらの手順は私のために働いています:

cd [dir]
git init
git clone [your Repository Url]

私もそれがあなたのために働くことを望みます。


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