Saya baru-baru ini menghapus beberapa folder dari riwayat repositori git saya menggunakan perintah berikut:
git filter-branch --index-filter 'git rm -r --cached var' -- --all
Sayangnya saya tidak dapat menarik lagi dari repo ini, Ini adalah set kesalahan yang saya dapatkan:
git pull
remote: Counting objects: 3953, done.
remote: Compressing objects: 100% (2810/2810), done.
error: garbage at end of loose object '4b391c2cc93ccc8d2f7262335629a7f81d6bcbe0'
fatal: object 4b391c2cc93ccc8d2f7262335629a7f81d6bcbe0 is corrupted
fatal: index-pack failed
Jawaban:
Seseorang yang baik hati menulis sebuah skrip untuk melakukan ini secara otomatis (dan lebih teliti), tetapi proses pemulihan pada dasarnya adalah ini:
Periksa file yang melaporkan sampah, dengan hexdump.
Anda sedang mencari bagian dari file di mana ada sejumlah besar nol. Jika ada beberapa rentang seperti itu, saya sudah beruntung (N = 2) ketika mempertimbangkan hanya set nol pertama raksasa, bahkan ketika mereka memasukkan data kecil bukan nol. Ini adalah "sampah" yang dikeluhkan git.
Dari sini Anda dapat menentukan ukuran sebenarnya dari objek. Di sini, itu akan menjadi 0x504 atau 1.284 byte.
Buat salinan cadangan objek. Jika Anda memilih set nol yang salah, Anda dapat mencoba lagi dengan set yang berbeda.
Pangkas file hingga panjang yang sesuai.
Objek yang korup sekarang harus diperbaiki. Dengan asumsi itu satu-satunya, mengkloning / mendorong / menarik repositori sekarang akan berfungsi seperti yang diharapkan.
Mengutip sumber saya, saya percaya saya telah mengalami masalah yang sama, tetapi dalam kasus saya menggunakan Ubuntu 10.4 (kernel 2.6.32-23-generic). Dalam hal ini, ini adalah bug sistem file yang belum dilacak. Ada masalah terbuka pada ecryptfs pada subjek ini dan juga utas usenet terkait . Sepanjang jalan menuju solusi, saya menemukan jawaban dan ringkasan berguna di StackOverflow. The artikel terkait sangat menarik, meskipun saya akhirnya pergi dengan cara yang berbeda.
sumber