Git thất bại khi đẩy cam kết vào github


130

Tôi đã nhân bản một repo git mà tôi đã lưu trữ trên github vào máy tính xách tay của tôi. Tôi đã có thể đẩy thành công một vài cam kết vào github mà không gặp vấn đề gì. Tuy nhiên, bây giờ tôi nhận được lỗi sau:

Compressing objects: 100% (792/792), done.
error: RPC failed; result=22, HTTP code = 411
Writing objects: 100% (1148/1148), 18.79 MiB | 13.81 MiB/s, done.
Total 1148 (delta 356), reused 944 (delta 214)

Từ đây nó chỉ bị treo và cuối cùng tôi phải CTRL+ Cquay lại thiết bị đầu cuối.


Tại sao có lỗi HTTP? Bạn không đẩy github qua SSH?
Cascabel

Để làm rõ: url trong originphần .git/configkhông nói http, phải không?
Cascabel

@Jefromi Tôi đã nhân bản repo riêng của mình bằng liên kết http đọc / ghi.
Stephen Melvin

Không, nó nói https. Điều này thật kỳ lạ bởi vì tôi đã có thể thực hiện hai lần đẩy trước khi thất bại.
Stephen Melvin

Câu trả lời:


292

Tôi có cùng một vấn đề và tin rằng nó có liên quan đến kích thước của repo (được chỉnh sửa - hoặc kích thước của một tệp cụ thể) mà bạn đang cố gắng đẩy.

Về cơ bản tôi đã có thể tạo repos mới và đẩy chúng lên github. Nhưng một cái hiện có sẽ không hoạt động.

Mã lỗi HTTP dường như sao lưu cho tôi, đó là lỗi 'Yêu cầu về độ dài'. Vì vậy, có thể nó là quá lớn để calc hoặc tuyệt vời mà tối đa. Ai biết.

BIÊN TẬP

Tôi thấy rằng vấn đề có thể là các tập tin lớn. Tôi đã có một bản cập nhật sẽ không thúc đẩy mặc dù tôi đã đẩy thành công đến thời điểm đó. Chỉ có một tệp trong cam kết nhưng nó đã xảy ra là 1.6M

Vì vậy, tôi đã thêm thay đổi cấu hình sau đây

git config http.postBuffer 524288000

Để cho phép kích thước tệp lên tới 500M và sau đó quá trình đẩy của tôi đã hoạt động. Có thể ban đầu đây là vấn đề với việc đẩy một repo lớn qua giao thức http.

EDIT KẾT THÚC

cách tôi có thể làm cho nó hoạt động (EDIT trước khi tôi sửa đổi postBuffer) là để tăng khả năng repo của mình, sao chép nó vào một máy có thể thực hiện git qua ssh và đẩy nó vào github. Sau đó, khi bạn cố gắng thực hiện thao tác đẩy / kéo từ máy chủ ban đầu, nó sẽ hoạt động trên https. (vì nó là một lượng dữ liệu nhỏ hơn nhiều so với lần đẩy ban đầu).

Hi vọng điêu nay co ich.


Làm việc cho tôi cũng vậy, mặc dù tôi có lỗi HTTP 501 chứ không phải 411. Cảm ơn!
Emaad Ahmed Manzoor

Cảm ơn! Điều này đã làm việc, và thậm chí tăng tốc độ tải lên. Đã cố gắng đẩy một trang web lên các trang web Windows Azure mới và nó vẫn thất bại.
Jake

23
Có một nhược điểm là chỉ đặt giá trị này rất cao?
snogglethorpe

@snogglethorpe Có khả năng: "Mã hóa chuyển: chunked được sử dụng để tránh tạo tệp gói lớn cục bộ". Nếu bạn đặt giá trị thành một giá trị lớn, cuối cùng bạn có thể tạo các tệp gói lớn khi bạn cố gắng đẩy. Không phải tất cả các hệ thống tập tin xử lý tốt các tập tin lớn và chúng có thể không cắt tỉa hiệu quả. Bạn có thể xem các tệp này trong .git / object / pack.
cây gai dầu

Thay đổi http.postBufferkhông cần thiết hơn có hại, nhưng có một tác dụng phụ tiêu cực: Tăng nó lên trên mặc định có thể làm tăng độ trễ cho các lần đẩy lớn hơn (vì máy khách sẽ đệm yêu cầu HTTP thành các khối lớn hơn).
Swatantra Kumar

8

Nếu lệnh này không giúp

cấu hình git http.postBuffer 524288000

Hãy thử thay đổi phương thức ssh thành https

git remote -v
git remote rm origin 
git remote add origin https://github.com/username/project.git

4

Trông giống như sự cố máy chủ (tức là sự cố "GitHub").
Nếu bạn nhìn vào chủ đề này , nó có thể xảy ra khi git-http-backendmột đống bị hỏng. (Và vì họ chỉ đặt một hỗ trợ http thông minh ...)
Nhưng bất kể nguyên nhân thực sự là gì, nó cũng có thể liên quan đến sự gián đoạn gần đây trong một trong các máy chủ tệp GitHub .

Bạn vẫn thấy thông báo lỗi này? Bởi vì nếu bạn làm:

  • kiểm tra phiên bản Git cục bộ của bạn (và nâng cấp lên phiên bản mới nhất)
  • báo cáo đây là lỗi GitHub .

Lưu ý: Hỗ trợ HTTP thông minh là một vấn đề lớn đối với những người trong chúng ta đằng sau một proxy tường lửa doanh nghiệp dựa trên xác thực!

Từ giờ trở đi, nếu bạn sao chép một kho lưu trữ qua http://url và bạn đang sử dụng ứng dụng khách Git phiên bản 1.6.6 trở lên, Git sẽ tự động sử dụng cơ chế vận chuyển mới hơn, tốt hơn.
Tuy nhiên, điều tuyệt vời hơn nữa là giờ đây bạn có thể chuyển qua giao thức đó và sao chép các kho riêng. Nếu bạn truy cập kho lưu trữ riêng hoặc bạn là cộng tác viên và muốn truy cập đẩy, bạn có thể đặt tên người dùng của mình vào URL và Git sẽ nhắc bạn nhập mật khẩu khi bạn cố truy cập.

Các khách hàng cũ cũng sẽ quay trở lại cách cũ hơn, kém hiệu quả hơn, vì vậy không có gì nên phá vỡ - chỉ những khách hàng mới hơn sẽ hoạt động tốt hơn.

Vì vậy, một lần nữa, hãy đảm bảo nâng cấp máy khách Git của bạn trước.


Tôi gặp rắc rối tương tự đằng sau bộ định tuyến không dây ADSL (French Orange Livebox): không thể xuất bản khóa SSH của mình tại github.com , bị kẹt trên https ... cho đến khi tôi sử dụng truy cập internet thay thế.
Yves Martin

Hỗ trợ HTTP thông minh đã quản lý để giúp tôi vượt qua proxy tường lửa của chúng tôi khi tôi gặp "lỗi: RPC không thành công; result = 22, HTTP code = 0" khi tôi cố gắng đẩy.
Boggin

@Boggin Có, tôi xác nhận http thông minh thường là lựa chọn ưu tiên khi một người đứng sau proxy. Cổng http / https tiêu chuẩn (hầu như) luôn được mở.
VonC


0

Tôi đã cố gắng đẩy đến máy chủ bonobo-git được lưu trữ của riêng mình và không nhận ra rằng http.postbuffer có nghĩa là thư mục dự án ...

vì vậy chỉ dành cho những người bối rối khác:

tại sao? Trong trường hợp của tôi, tôi đã có các tệp zip lớn với tài sản và một số PSD cũng được đẩy - lớn cho bộ đệm tôi đoán.

Cách thực hiện http.postbuffer này: thực thi lệnh đó trong thư mục src dự án của bạn, bên cạnh thư mục .git, không phải trên máy chủ.

lưu ý, các tệp temp (chunk) lớn sẽ được tạo với kích thước bộ đệm đó.

Lưu ý: Chỉ cần kiểm tra các tệp lớn nhất của bạn, sau đó đặt bộ đệm.


-2

Vấn đề cần đẩy chủ yếu là do kích thước của các tệp cần được đẩy. Tôi đã cố gắng đẩy một số thư viện có kích thước chỉ 2 mb, sau đó quá trình đẩy đã gây ra lỗi của RPC với kết quả 7. Đường truyền có tốc độ 4 mbps và đang hoạt động tốt. Một số cố gắng sau đó để đẩy tôi đã thành công. Nếu lỗi như vậy xảy ra, hãy đợi trong vài phút và tiếp tục cố gắng.

Tôi cũng phát hiện ra rằng có một số lỗi RPC nếu github ngừng hoạt động hoặc mạng không ổn định ở bên cạnh chúng.

Vì vậy, tiếp tục cố gắng sau một số khoảng thời gian là lựa chọn duy nhất!


-2

trong những trường hợp này, bạn có thể thử ssh nếu https bị kẹt.

Ngoài ra, bạn có thể thử tăng kích thước bộ đệm lên một con số thiên văn để bạn không phải lo lắng về kích thước bộ đệm nữa git config http.postBuffer 100000000

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.