কিছু দয়ালু আত্মা স্বয়ংক্রিয়ভাবে এটি করার জন্য একটি স্ক্রিপ্ট লিখেছিল (এবং আরও ভালভাবে), কিন্তু পুনরুদ্ধারের প্রক্রিয়াটি মূলত এটি:
হেক্সডাম্প সহ যে ফাইলটি আবর্জনা রিপোর্ট করে সেগুলি পরীক্ষা করুন।
$ hexdump .git/objects/4b391c2cc93ccc8d2f7262335629a7f81d6bcbe0
আপনি ফাইলটির এমন একটি অংশ সন্ধান করছেন যেখানে বিশাল শূন্য রয়েছে। যদি এরকম একাধিক স্প্যান থাকে তবে জিরোগুলির প্রথম প্রথম জায়ান্ট সেটটি বিবেচনা করার সময়ও আমার ভাগ্য ভাল ছিল (এন = 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 (কার্নেল ২..3.৩২-২৩-জেনেরিক) ব্যবহার করা হয়েছে। এই ক্ষেত্রে এটি একটি ফাইল সিস্টেম বাগ যা এখনও ট্র্যাক করা যায়নি। এই বিষয়টিতে ইক্য্রিপ্টসগুলিতে একটি মুক্ত সমস্যা রয়েছে এবং এটি সম্পর্কিত ইউজনেট থ্রেড । সমাধানের পথে, আমি স্ট্যাকওভারফ্লোতে একটি সহজ উত্তর এবং সংক্ষিপ্তসার পেয়েছি। লিঙ্ক নিবন্ধ , খুব আকর্ষণীয় ছিল, যদিও আমি চরমভাবে অন্যভাবে গেলেন।