lỗi: RPC không thành công; Đã kết thúc quá trình chuyển giao với dữ liệu đã đọc còn lại


130

Tôi đang gặp phải lỗi này khi cố gắng sao chép kho lưu trữ từ GitLab (GitLab 6.6.2 4ef8369):

nhập mô tả hình ảnh ở đây

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

Bản sao sau đó bị hủy bỏ. Làm thế nào tôi có thể tránh điều này?

Câu trả lời:


223

Nó xảy ra thường xuyên hơn không, tôi đang sử dụng kết nối internet chậm và tôi phải sao chép một kho lưu trữ git khổng lồ. Vấn đề phổ biến nhất là kết nối bị đóng và toàn bộ bản sao bị hủy.

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

Sau rất nhiều thử nghiệm và sai sót và rất nhiều "đầu từ xa bị treo đột ngột", tôi có một cách phù hợp với tôi. Ý tưởng là thực hiện một bản sao nông trước và sau đó cập nhật kho lưu trữ với lịch sử của nó.

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

10
Đây là câu trả lời duy nhất mô tả cách giải quyết cho sự cố mà không cần chuyển sang SSH. Điều này làm việc cho tôi, cảm ơn!
garie

14
Chìa khóa ở đây là --depth 1--unshallow. Điều này cũng hoạt động để tìm nạp một kho hiện có trên kết nối chậm: git fetch --depth 1sau đó git fetch --unshallow.
Andrew T.

1
Để rõ ràng @AndrewT., git fetch --unshallowLệnh xử lý việc mất kết nối theo cách dễ tha thứ hơn lệnh git clone? Và đó là điều tạo nên sự khác biệt ở đây?
Lowell

2
Bây giờ, các git fetch --unshallowlệnh Hãy cho RPC failed;lỗi
ms_27

1
Không làm việc cho tôi. Không thành công trên git fetch --unshallow. Đoán repo của tôi quá lớn ngay cả đối với cách tiếp cận này. Chỉ SSH hoạt động.
Jonathan Cabrera

60

Sau vài ngày, hôm nay tôi chỉ giải quyết được vấn đề này. Tạo khóa ssh, hãy làm theo bài viết này:

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

Khai báo nó với

  1. Nhà cung cấp Git (GitLab những gì tôi đang sử dụng, GitHub).
  2. Thêm điều này vào danh tính địa phương.

Sau đó sao chép bằng lệnh:

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

Và không có lỗi xảy ra.

Vấn đề trên

lỗi: RPC không thành công; Kết thúc chuyển giao curl 18 với dữ liệu đã đọc còn lại

vì có lỗi khi sao chép bằng giao thức HTTP ( curllệnh).

Và, bạn nên tăng kích thước bộ đệm:

git config --global http.postBuffer 524288000

7
Thay đổi từ HTTP sang SSH phù hợp với tôi. Cấu hình http.postBufferkhông hoạt động.
thangdc94

nếu vẫn còn lỗi, bạn nên chỉnh sửa tệp cấu hình ssh của mình vi /users/username/.ssh/config và thêm serverAliveInterval 120 và thoát vi bằng wq (để lưu và thoát). Điều này thực sự sẽ ngăn máy chủ khỏi lỗi thời gian chờ và ngắt kết nối.
Tanvir Singh

điều đó thật tuyệt, nhưng có ai biết tại sao điều đó lại xảy ra đối với 100% bản sao không?
workplaylifecycle

Thay đổi http.postBufferđã làm việc cho tôi - cảm ơn!
Negar Zamiri

Cảm ơn bạn, nó phù hợp với tôi, giải pháp này sẽ được bình chọn nhiều hơn :)
Sadmi

17

Khi tôi thử nhân bản từ điều khiển từ xa, liên tục gặp sự cố tương tự:

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

Cuối cùng điều này đã làm việc cho tôi:

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

3
what --depth 1 does
Wahdat Kashmiri

Làm việc tốt cho tôi.
vijay junupalli

Nếu kho lưu trữ nguồn đã hoàn thành, hãy chuyển đổi một kho lưu trữ nông thành một kho hoàn chỉnh, loại bỏ tất cả các hạn chế do các kho lưu trữ nông nghiệp áp đặt. Nếu kho lưu trữ nguồn cạn, hãy tìm nạp càng nhiều càng tốt để kho lưu trữ hiện tại có cùng lịch sử với kho lưu trữ nguồn.
RahmanRezaee

6

bạn cần tắt tính năng nén:

git config --global core.compression 0

thì bạn cần phải sử dụng nhân bản nông

git clone --depth=1 <url>

thì bước quan trọng nhất là cd vào dự án nhân bản của bạn

cd <shallow cloned project dir>

bây giờ mở bản sao, từng bước

git fetch --depth=N, with increasing N

ví dụ.

git fetch --depth=4

sau đó,

git fetch --depth=100

sau đó,

git fetch --depth=500

bạn có thể chọn số bước bạn muốn bằng cách thay thế N này,

và cuối cùng tải xuống tất cả các bản sửa đổi còn lại bằng cách sử dụng,

git fetch --unshallow 

ủng hộ nếu nó giúp bạn :)


5

Giải pháp đơn giản: Thay vì sao chép qua https, hãy sao chép nó qua ssh.

Ví dụ:

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

Đúng. Tôi là người dùng windows.
Vaibhav Jain

5

Sự cố kết nối mạng.
Có thể do thời gian chờ kết nối liên tục.
Cách tốt nhất là đổi sang mạng khác.


5

Các bước này phù hợp với tôi: sử dụng git://thay vìhttps://


3
Chào mừng bạn đến với Stack Overflow. Vui lòng cố gắng cung cấp câu trả lời chi tiết hơn một chút để bất kỳ ai muốn thử giải pháp của bạn có thể thực hiện dễ dàng.
McMutton

trên thực tế, câu trả lời này là cụ thể hơn những người tiếp theo trong chủ đề này ..
xxxvodnikxxx

4

Như đã đề cập ở trên, trước hết hãy chạy lệnh git của bạn từ bash, thêm các chỉ thị nhật ký nâng cao vào đầu: GIT_TRACE=1 GIT_CURL_VERBOSE=1 git ...

Ví dụ: GIT_CURL_VERBOSE=1 GIT_TRACE=1 git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin Điều này sẽ hiển thị cho bạn thông tin chi tiết về lỗi.


2

Với tôi sự cố này xảy ra do cấu hình proxy. Tôi đã thêm máy chủ ip git trong ngoại lệ proxy. Máy chủ git là cục bộ, nhưng biến môi trường no_proxy không được đặt chính xác.

Tôi đã sử dụng lệnh này để xác định sự cố:

#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

Đổi lại có "Ủy quyền proxy" vì máy chủ git tại chỗ không nên đi qua proxy. Nhưng vấn đề thực sự là kích thước của các tệp được xác định bởi các quy tắc proxy


2

Đối với tôi, vấn đề là kết nối đóng trước khi toàn bộ bản sao hoàn tất. Tôi đã sử dụng ethernet thay vì kết nối wifi. Sau đó, nó giải quyết cho tôi



1

Lỗi này dường như xảy ra phổ biến hơn với kết nối internet chậm hoặc gặp sự cố. Tôi đã kết nối với tốc độ internet tốt sau đó nó hoạt động hoàn hảo.


1

Sự cố này xảy ra khi bạn gặp sự cố proxy hoặc mạng chậm. Bạn có thể sử dụng giải pháp chiều sâu hoặc

git fetch --all  or git clone 

    

Nếu điều này gây ra lỗi curl 56 Recv fail thì hãy tải xuống tệp qua zip hoặc đặt tên nhánh thay vì --all

git fetch origin BranchName 

-1

Thay đổi giao thức git clone để thử.

ví dụ: lỗi này đã xảy ra khi "git clone https: // xxxxxxxxxxxxxxx "

bạn có thể thử với "git clone git: // xxxxxxxxxxxxxx", có thể ok rồi.


-6

Các bước này đang làm việc cho tôi:

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

Tôi hy vọng điều đó cũng hiệu quả với bạn.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.