Giải pháp nhanh chóng:
Với loại lỗi này, tôi thường bắt đầu bằng cách tăng postBuffer
kích thước bằng cách:
git config --global http.postBuffer 524288000
(một số ý kiến dưới đây báo cáo phải tăng gấp đôi giá trị):
git config --global http.postBuffer 1048576000
Thêm thông tin:
Từ git config
trang người đàn ông , http.postBuffer
là về:
Kích thước tối đa tính bằng byte của bộ đệm được sử dụng bởi vận chuyển HTTP thông minh khi POST dữ liệu lên hệ thống từ xa.
Đối với các yêu cầu lớn hơn kích thước bộ đệm này, HTTP / 1.1 và Transfer-Encoding: chunked
được sử dụng để tránh tạo tệp gói lớn cục bộ. Mặc định là 1 MiB, đủ cho hầu hết các yêu cầu.
Ngay cả đối với bản sao, điều đó có thể có ảnh hưởng và trong trường hợp này, OP Joe báo cáo:
[clone] hoạt động tốt bây giờ
Lưu ý: nếu có lỗi xảy ra ở phía máy chủ và nếu máy chủ sử dụng Git 2.5+ (quý 2 năm 2015), thông báo lỗi có thể rõ ràng hơn.
Xem " Nhân bản Git: đầu từ xa bị treo bất ngờ, đã thử thay đổi postBuffer
nhưng vẫn không thành công ".
Kulai ( trong các bình luận ) chỉ ra trang Git khắc phục sự cố Atlassian này , có thêm:
Error code 56
cho thấy một curl nhận được lỗi CURLE_RECV_ERROR
có nghĩa là có một số vấn đề ngăn dữ liệu được nhận trong quá trình nhân bản.
Thông thường, điều này là do cài đặt mạng, tường lửa, máy khách VPN hoặc phần mềm chống vi-rút đang chấm dứt kết nối trước khi tất cả dữ liệu được truyền.
Nó cũng đề cập đến biến môi trường sau đây, để giúp cho quá trình gỡ lỗi.
# 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
Với Git 2.25.1 (tháng 2 năm 2020), bạn biết thêm về http.postBuffer
"giải pháp" này.
Xem cam kết 7a2dc95 , cam kết 1b13e90 (ngày 22 tháng 1 năm 2020) bởi brian m. carlson ( bk2204
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 53a8329 , ngày 30 tháng 1 năm 2020)
( thảo luận danh sách Git Mailing )
docs
: đề cập khi tăng http.postBuffer có giá trị
Đã ký tắt: brian m. carlson
Người dùng trong nhiều tình huống khác nhau thấy mình gặp vấn đề về đẩy HTTP.
Thông thường, những vấn đề này là do phần mềm chống vi-rút, lọc proxy hoặc các tình huống trung gian khác; lần khác, chúng là do sự không tin cậy đơn giản của mạng.
Tuy nhiên, một giải pháp phổ biến cho các vấn đề đẩy HTTP được tìm thấy trực tuyến là tăng http.postBuffer.
Điều này hoạt động cho bất kỳ tình huống nào đã nói ở trên và chỉ hữu ích trong một số ít trường hợp bị hạn chế cao: về cơ bản, khi kết nối không hỗ trợ đúng cách HTTP / 1.1.
Tài liệu khi nâng giá trị này là phù hợp và những gì nó thực sự làm, và không khuyến khích mọi người sử dụng nó như một giải pháp chung cho các vấn đề đẩy, vì nó không hiệu quả ở đó.
Vì vậy, tài liệu cho git config http.postBuffer
bây giờ bao gồm:
http.postBuffer
Kích thước tối đa tính bằng byte của bộ đệm được sử dụng bởi vận chuyển HTTP thông minh khi POST dữ liệu lên hệ thống từ xa.
Đối với các yêu cầu lớn hơn kích thước bộ đệm này, HTTP / 1.1 và Mã hóa chuyển: chunked được sử dụng để tránh tạo tệp gói lớn cục bộ.
Mặc định là 1 MiB, đủ cho hầu hết các yêu cầu.
Lưu ý rằng việc tăng giới hạn này chỉ có hiệu quả trong việc vô hiệu hóa mã hóa chuyển khối và do đó chỉ nên được sử dụng khi máy chủ từ xa hoặc proxy chỉ hỗ trợ HTTP / 1.0 hoặc không tuân thủ tiêu chuẩn HTTP.
Nói chung, việc nâng cao này không phải là một giải pháp hiệu quả cho hầu hết các vấn đề đẩy, nhưng có thể làm tăng đáng kể mức tiêu thụ bộ nhớ vì toàn bộ bộ đệm được phân bổ ngay cả cho các lần đẩy nhỏ .