किसी तरह की आत्मा ने इसे स्वचालित रूप से करने के लिए एक स्क्रिप्ट लिखी (और अधिक अच्छी तरह से), लेकिन पुनर्प्राप्ति की प्रक्रिया मूल रूप से यह है:
उस फ़ाइल की जाँच करें जो कचरा रिपोर्ट करती है, हेक्सडंप के साथ।
$ hexdump .git/objects/4b391c2cc93ccc8d2f7262335629a7f81d6bcbe0
आप उस फ़ाइल के एक हिस्से की तलाश कर रहे हैं जहाँ ज़ीरो का एक बड़ा समय है। यदि ऐसे कई स्पैन हैं, तो मुझे अच्छा भाग्य (N = 2) मिला है, जब वे शून्य के पहले विशाल सेट पर विचार कर रहे थे, तब भी जब उनमें नॉनजरो डेटा के छोटे रन शामिल थे। यह वह "कचरा" है जिसके बारे में शिकायत शिकायत कर रही है।
...
0000500 0532 0302 0000 0000 0000 0000 0000 0000 # <-- Beginning here...
0000510 0000 0000 0000 0000 0000 0000 0000 0000
*
0001000 # ... almost 3kb of zeros.
आप इससे ऑब्जेक्ट का वास्तविक आकार निर्धारित कर सकते हैं । यहां, यह 0x504 या 1,284 बाइट होगा।
ऑब्जेक्ट की बैकअप प्रतिलिपि बनाएँ। यदि आप शून्य का गलत सेट चुनते हैं, तो आप एक अलग सेट के साथ फिर से कोशिश कर सकते हैं।
$ cp .git/objects/4b391c2cc93ccc8d2f7262335629a7f81d6bcbe0 ~/old_4b391c2cc93ccc8d2f7262335629a7f81d6bcbe0
फ़ाइल को उसकी उचित लंबाई तक काटें।
$ truncate -s 1284 .git/objects/4b391c2cc93ccc8d2f7262335629a7f81d6bcbe0
भ्रष्ट वस्तु को अब ठीक किया जाना चाहिए। यह मानते हुए कि केवल एक ही था, रिपॉजिटरी को क्लोनिंग / पुश / पुलिंग करना चाहिए जो अब अपेक्षित है।
अपने स्रोतों का हवाला देते हुए, मेरा मानना है कि मैंने एक ही मुद्दे का अनुभव किया है, लेकिन मेरे मामले में उबंटू 10.4 (कर्नेल 2.6.32-23-जनरेटर) का उपयोग कर रहा है। इस मामले में, यह एक फाइल सिस्टम बग है जिसे अभी तक ट्रैक नहीं किया गया है। इस विषय पर ecryptfs पर एक खुला मुद्दा है और संबंधित यूनेट थ्रेड भी है । समाधान के रास्ते के साथ, मुझे StackOverflow पर एक आसान उत्तर और सारांश मिला । लिंक किए गए लेख , बहुत ही दिलचस्प था, हालांकि मैं अंत में एक अलग तरह से चला गया।