Git gagal ketika mendorong komit ke github


130

Saya mengkloning git repo yang saya host di github ke laptop saya. Saya berhasil mendorong beberapa komitmen untuk github tanpa masalah. Namun, sekarang saya mendapatkan kesalahan berikut:

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)

Dari sini hanya hang dan akhirnya saya harus CTRL+ Ckembali ke terminal.


Mengapa ada kesalahan HTTP? Apakah Anda tidak mendorong untuk github melalui SSH?
Cascabel

Untuk memperjelas: url di originbagian .git/configtidak mengatakan http, bukan?
Cascabel

@Jefromi Saya mengkloning repo pribadi saya menggunakan tautan baca / tulis http.
Stephen Melvin

Tidak, katanya https. Ini aneh karena saya sudah bisa melakukan dua dorongan sebelum kegagalan.
Stephen Melvin

Jawaban:


292

Saya memiliki masalah yang sama dan percaya bahwa itu ada hubungannya dengan ukuran repo (diedit - atau ukuran file tertentu) yang Anda coba push.

Pada dasarnya saya dapat membuat repo baru dan mendorongnya ke github. Tapi yang sudah ada tidak akan berfungsi.

Kode kesalahan HTTP sepertinya mendukung saya, ini adalah kesalahan 'Diperlukan Panjang'. Jadi mungkin itu terlalu besar untuk dihitung atau greated bahwa maks. Siapa tahu.

EDIT

Saya menemukan bahwa masalahnya mungkin file yang besar. Saya memiliki satu pembaruan yang tidak akan mendorong meskipun saya berhasil mendorong hingga saat itu. Hanya ada satu file di komit tetapi kebetulan 1,6M

Jadi saya menambahkan perubahan konfigurasi berikut

git config http.postBuffer 524288000

Untuk memungkinkan hingga ukuran file 500 juta dan kemudian dorongan saya bekerja. Mungkin ini adalah masalah awalnya dengan mendorong repo besar atas protokol http.

AKHIR EDIT

cara saya bisa membuatnya bekerja (EDIT sebelum saya memodifikasi postBuffer) adalah untuk menaikkan repo saya, menyalinnya ke mesin yang dapat melakukan git over ssh, dan mendorongnya ke github. Kemudian ketika Anda mencoba untuk melakukan push / pull dari server asli itu harus berfungsi lebih dari https. (Karena ini adalah jumlah data yang jauh lebih kecil daripada dorongan asli).

Semoga ini membantu.


Bekerja untuk saya juga, meskipun saya memiliki kesalahan HTTP 501 daripada 411. Terima kasih!
Emaad Ahmed Manzoor

Terima kasih! ini berhasil, dan bahkan mempercepat unggahan. Sedang mencoba mendorong situs web ke Situs Web Windows Azure baru dan terus gagal.
Jake

23
Apakah ada kerugian hanya dengan menetapkan nilai ini sangat tinggi?
snogglethorpe

@snogglethorpe Berpotensi: "Transfer-Encoding: chunked digunakan untuk menghindari membuat file paket besar secara lokal". Jika Anda menetapkan nilainya menjadi sesuatu yang besar, Anda bisa menghasilkan file paket besar saat Anda mencoba mendorong. Tidak semua sistem file menangani file besar dengan baik dan mereka mungkin tidak memangkas secara efisien. Anda dapat melihat file-file ini di .git / objek / paket.
rami

Mengubah http.postBufferlebih tidak perlu daripada berbahaya, tetapi ada efek samping negatif: Meningkatkannya di atas standar dapat meningkatkan latensi untuk dorongan yang lebih besar (karena klien akan buffer permintaan HTTP ke dalam potongan yang lebih besar).
Swatantra Kumar

8

Jika perintah ini tidak membantu

git config http.postBuffer 524288000

Cobalah untuk mengubah metode ssh ke https

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

4

Sepertinya masalah server (yaitu masalah "GitHub").
Jika Anda melihat thread ini , hal ini bisa terjadi ketika git-http-backendmendapat tumpukan rusak. (Dan karena mereka hanya menempatkan sebuah dukungan http pintar ...)
Tapi apa pun penyebab sebenarnya adalah, mungkin juga terkait dengan baru-baru ini gangguan sporadis di salah satu server file GitHub .

Apakah Anda masih melihat pesan kesalahan ini? Karena jika Anda melakukannya:

  • periksa versi Git lokal Anda (dan tingkatkan ke versi terbaru)
  • laporkan ini sebagai bug GitHub .

Catatan: Dukungan HTTP Pintar adalah masalah besar bagi kita di belakang proksi firewall perusahaan yang diautentikasi!

Mulai sekarang, jika Anda mengkloning repositori ke http://url dan Anda menggunakan Git klien versi 1.6.6 atau lebih tinggi, Git akan secara otomatis menggunakan mekanisme transportasi yang lebih baru dan lebih baik.
Akan tetapi, yang lebih menakjubkan adalah bahwa Anda sekarang dapat menekan protokol itu dan mengkloning repositori pribadi juga. Jika Anda mengakses repositori pribadi, atau Anda adalah kolaborator dan ingin akses push, Anda dapat memasukkan nama pengguna Anda di URL dan Git akan meminta kata sandi saat Anda mencoba mengaksesnya.

Klien yang lebih tua juga akan kembali ke cara yang lebih lama dan kurang efisien, sehingga tidak ada yang rusak - hanya klien yang lebih baru akan bekerja lebih baik.

Jadi sekali lagi, pastikan untuk meningkatkan klien Git Anda terlebih dahulu.


Saya mendapat masalah serupa di balik router nirkabel ADSL (French Orange Livebox): tidak mungkin untuk mempublikasikan kunci SSH saya di github.com , tekan terjebak di https ... sampai saya menggunakan akses internet alternatif.
Yves Martin

Dukungan HTTP Pintar berhasil membuat saya melalui proxy firewall kami ketika saya mendapatkan "kesalahan: RPC gagal; hasil = 22, kode HTTP = 0" ketika saya mencoba untuk mendorong.
Boggin

@ Boggin Ya, saya mengkonfirmasi http pintar umumnya pilihan yang disukai ketika ada di belakang proxy. Port http / https standar (hampir) selalu dibuka.
VonC


0

Saya mencoba untuk mendorong ke server bonobo-git yang di-host saya sendiri, dan tidak menyadari, bahwa http.postbuffer berarti direktori proyek ...

jadi hanya untuk yang bingung:

Mengapa? Dalam kasus saya, saya punya file zip besar dengan aset dan beberapa PSD mendorong juga - besar untuk buffer saya kira.

Bagaimana melakukan ini http.postbuffer: jalankan perintah itu di dalam direktori src proyek Anda, di sebelah folder .git, bukan di server.

Sadarilah, file temp (chunk) besar akan dibuat dengan ukuran buffer itu.

Catatan: Cukup periksa file terbesar Anda, lalu atur buffer.


-2

Masalah untuk mendorong sebagian besar adalah karena ukuran file yang perlu didorong. Saya mencoba untuk mendorong beberapa perpustakaan hanya dengan ukuran 2 mb, kemudian juga dorongan itu memberikan kesalahan RPC dengan hasil 7. Jalurnya adalah 4 mbps dan bekerja dengan baik. Beberapa percobaan berikutnya yang mendorong saya berhasil. Jika kesalahan tersebut terjadi, tunggu beberapa menit dan terus mencoba.

Saya juga menemukan bahwa ada beberapa kegagalan RPC jika github turun atau mendapatkan jaringan yang tidak stabil di sisi mereka.

Jadi terus mencoba setelah beberapa interval adalah satu-satunya pilihan!


-2

dalam kasus ini Anda dapat mencoba ssh jika https macet.

Anda juga dapat mencoba meningkatkan ukuran buffer ke angka astronomi sehingga Anda tidak perlu khawatir tentang ukuran buffer lagi git config http.postBuffer 100000000

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.