গীতে দুর্নীতিযুক্ত ফাইল


8

আমি নিম্নলিখিত কমান্ডটি ব্যবহার করে আমার গিট রিপোস ইতিহাস থেকে কিছু ফোল্ডার সরিয়েছি:

git filter-branch --index-filter 'git rm -r --cached var' -- --all

দুর্ভাগ্যক্রমে আমি এই ভাণ্ডার থেকে আর টানতে পারি না, এটিই আমি পেয়ে যাচ্ছি ত্রুটি সেট:

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

আপনি কোন লিনাক্স সিস্টেমে পরিবর্তন করেছেন?
অ্যান্ড্রেস জ্যান ট্যাক

আমি উইন্ডোজ ব্যবহার করছিলাম; এখন আমি লিনাক্সে আছি এবং এটি ভালভাবে কাজ করে
এমএনএমএল

উত্তর:


7

কিছু দয়ালু আত্মা স্বয়ংক্রিয়ভাবে এটি করার জন্য একটি স্ক্রিপ্ট লিখেছিল (এবং আরও ভালভাবে), কিন্তু পুনরুদ্ধারের প্রক্রিয়াটি মূলত এটি:

  1. হেক্সডাম্প সহ যে ফাইলটি আবর্জনা রিপোর্ট করে সেগুলি পরীক্ষা করুন।

    $ 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 বাইট হবে।

  2. অবজেক্টটির ব্যাকআপ কপি তৈরি করুন। আপনি যদি জিরোগুলির ভুল সেটটি চয়ন করেন তবে আপনি একটি আলাদা সেট দিয়ে আবার চেষ্টা করতে পারেন।

    $ cp .git/objects/4b391c2cc93ccc8d2f7262335629a7f81d6bcbe0 ~/old_4b391c2cc93ccc8d2f7262335629a7f81d6bcbe0
    
  3. ফাইলটিকে তার উপযুক্ত দৈর্ঘ্যে ছাঁটাই করুন।

    $ truncate -s 1284 .git/objects/4b391c2cc93ccc8d2f7262335629a7f81d6bcbe0
    

দূষিত বস্তু এখন ঠিক করা উচিত। ধরে নেওয়া যায় এটি একমাত্র, ক্লোনিং / পুশিং / সংগ্রহের সংগ্রহস্থল এখন প্রত্যাশা অনুযায়ী কাজ করা উচিত।

আমার উত্সগুলি উদ্ধৃত করে, আমি বিশ্বাস করি যে আমি একই সমস্যাটি অনুভব করেছি তবে আমার ক্ষেত্রে উবুন্টু 10.4 (কার্নেল ২..3.৩২-২৩-জেনেরিক) ব্যবহার করা হয়েছে। এই ক্ষেত্রে এটি একটি ফাইল সিস্টেম বাগ যা এখনও ট্র্যাক করা যায়নি। এই বিষয়টিতে ইক্য্রিপ্টসগুলিতে একটি মুক্ত সমস্যা রয়েছে এবং এটি সম্পর্কিত ইউজনেট থ্রেড । সমাধানের পথে, আমি স্ট্যাকওভারফ্লোতে একটি সহজ উত্তর এবং সংক্ষিপ্তসার পেয়েছি। লিঙ্ক নিবন্ধ , খুব আকর্ষণীয় ছিল, যদিও আমি চরমভাবে অন্যভাবে গেলেন।


এই উত্তরের জন্য আপনাকে অনেক ধন্যবাদ thank git-remove-trailing-garbage.py (উপরে লেখাটির সাথে আপনার লিঙ্কটি "একটি স্ক্রিপ্ট লিখেছিল") যখন আপনি উল্লিখিত একই ক্রাইটিপস বাগে দৌড়ালেন তখন আমার বেকন সংরক্ষণ করেছিলেন!
অ্যাডাম মনসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.