오류 : RPC가 실패했습니다. 남아있는 미해결 읽기 데이터로 컬 전송이 닫혔습니다.


130

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

그런 다음 클론이 중단됩니다. 이것을 어떻게 피할 수 있습니까?

답변:


223

그것은 자주 발생하지 않습니다. 저는 인터넷 연결이 느리고 상당히 거대한 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로 전환하지 않고 문제에 대한 해결 방법을 설명하는 유일한 대답입니다. 이것은 나를 위해 일했습니다, 감사합니다!
garie jul.

14
여기서 핵심은 --depth 1--unshallow입니다. : 이것은 또한 연결 속도가 느린 기존의 repo를 가져 오는 작동 git fetch --depth 1git fetch --unshallow.
Andrew T.

1
명확성을 위해 @AndrewT., git fetch --unshallow명령은 git clone? 보다 관용적 인 방식으로 연결 손실을 처리합니다 . 그리고 그것이 여기서 차이를 만드는 것입니까?
Lowell

2
이제 git fetch --unshallow명령은 RPC failed;오류를 제공 합니다
ms_27

1
나를 위해 일하지 않았다. 에서 실패했습니다 git fetch --unshallow. 이 접근 방식에서도 내 repo가 ​​너무 큽니다. SSH 만 작동했습니다.
Jonathan Cabrera

60

며칠 후 오늘이 문제를 해결했습니다. 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가 실패했습니다. curl 18 전송이 닫히고 미해결 읽기 데이터가 남아 있습니다.

HTTP 프로토콜 ( curl명령)로 복제 할 때 오류가 있기 때문 입니다.

그리고 버퍼 크기를 늘려야합니다.

git config --global http.postBuffer 524288000

7
HTTP에서 SSH로 변경하면 저에게 효과적입니다. 구성 http.postBuffer이 작동하지 않았습니다.
thangdc94

오류가 여전히 존재하는 경우 ssh 구성 파일 vi /users/username/.ssh/config를 편집하고 serverAliveInterval 120을 추가하고 wq를 사용하여 vi를 종료해야합니다 (저장 및 종료). 이것은 실제로 서버가 시간 초과 및 연결 끊김 오류를 방지합니다.
Tanvir Singh

좋지만 100 % 복제 된 경우 왜 그런지 아는 사람이 있습니까?
workplaylifecycle

바꾸다 http.postBuffer 는 나를 위해 일했습니다-감사합니다!
Negar Zamiri

감사합니다. 저에게 효과적입니다.이 솔루션은 더 많이 투표해야합니다. :)
Sadmi

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

도움이된다면 찬성 투표 :)


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://대신https://


3
Stack Overflow에 오신 것을 환영합니다. 귀하의 솔루션을 시도하려는 사람이 쉽게 할 수 있도록 좀 더 자세한 답변을 제공하십시오.
McMutton

실제로이 답변은이 스레드의 다음 답변보다 더 구체적입니다 ..
xxxvodnikxxx

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 서버가 프록시를 통과해서는 안되는 지점이기 때문에 "Proxy-Authorization"이있었습니다. 하지만 진짜 문제는 프록시 규칙에 정의 된 파일의 크기였습니다.


2

나에게 문제는 전체 복제가 완료되기 전에 연결이 닫히는 것입니다. Wi-Fi 연결 대신 이더넷을 사용했습니다. 그럼 나를 위해 해결해



1

이 오류는 느리거나 문제가있는 인터넷 연결에서 더 일반적으로 발생하는 것 같습니다. 인터넷 속도가 좋아서 완벽하게 작동합니다.


1

이 문제는 프록시 문제이거나 네트워크 속도가 느린 경우에 발생합니다. 깊이 솔루션을 사용하거나

git fetch --all  or git clone 

    

이것이 curl 56 Recv 실패 오류 를 제공하면 zip을 통해 파일을 다운로드하거나 --all 대신 분기 이름을 spicify

git fetch origin BranchName 

-1

시도 할 자식 복제 프로토콜 변경.

예를 들어, "git clone https : // xxxxxxxxxxxxxxx " 일 때이 오류가 발생했습니다 .

"git clone git : // xxxxxxxxxxxxxx"로 시도해 볼 수 있습니다.


-6

이 단계는 저에게 효과적입니다.

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

나는 그것이 당신에게도 효과가 있기를 바랍니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.