আমি কী করছি তা বুঝতে আমার বেশ কয়েকটি উত্তর এবং কিছু অন্যান্য তথ্য পড়তে হবে।
1. একটি নির্দিষ্ট প্রতিশ্রুতি চেয়ে পুরানো সবকিছু উপেক্ষা
ফাইলটি .git/info/grafts
কমিটমেন্টের জন্য ভুয়া পিতামাতার সংজ্ঞা দিতে পারে। কেবল একটি প্রতিশ্রুতিবদ্ধ আইডি সহ একটি লাইন বলেছে যে প্রতিশ্রুতিবদ্ধতার কোনও পিতা-মাতা নেই। যদি আমরা বলতে চাই যে আমরা কেবলমাত্র গত 2000 কমিট সম্পর্কে যত্নশীল, আমরা টাইপ করতে পারি:
git rev-parse HEAD~2000 > .git/info/grafts
গিট রেভ-পার্স আমাদের বর্তমান কমিটের 2000 তম পিতামাতার কমিট আইডি দেয় gives উপরের কমান্ডটি উপস্থিত থাকলে গ্রাফ্ট ফাইলটি ওভাররাইট করবে। সেখানে আগে আছে কিনা তা পরীক্ষা করে দেখুন।
২. গিট ইতিহাস পুনরায় লিখুন (alচ্ছিক)
আপনি যদি এই কলমযুক্ত জাল বাবা-মাকে সত্যিকারের আদায় করতে চান তবে চালান:
git filter-branch -- --all
এটি সমস্ত কমিট আইডির পরিবর্তন করবে। এই সংগ্রহস্থলের প্রতিটি অনুলিপি জোর করে আপডেট করা দরকার।
৩. ডিস্কের জায়গা পরিষ্কার করুন
আমি পদক্ষেপ 2 করিনি, কারণ আমি চেয়েছিলাম যে আমার অনুলিপি প্রবাহের সাথে সামঞ্জস্যপূর্ণ থাকবে। আমি কেবল কিছু ডিস্কের জায়গা সংরক্ষণ করতে চেয়েছিলাম। পুরানো সমস্ত কমিটগুলি ভুলে যাওয়ার জন্য:
git prune
git gc
বিকল্প: অগভীর অনুলিপি
আপনার যদি অন্য সংগ্রহস্থলের অগভীর অনুলিপি থাকে এবং কিছুটা ডিস্কের স্থান সংরক্ষণ করতে চান তবে আপনি আপডেট করতে পারেন .git/shallow
। তবে সাবধান থাকুন যে কোনও কিছুই আগে থেকে প্রতিশ্রুতিবদ্ধতার দিকে নির্দেশ করছে না। সুতরাং আপনি এই জাতীয় কিছু চালাতে পারেন:
git fetch --prune
git rev-parse HEAD~2000 > .git/shallow
git prune
git gc
অগভীর প্রবেশ এগুলি গ্রাফ্টের মতো কাজ করে। তবে একই সাথে গ্রাফ্ট এবং অগভীর ব্যবহার না করার বিষয়ে সতর্কতা অবলম্বন করুন। কমপক্ষে, সেখানে একই রকম এন্ট্রি করবেন না, এটি ব্যর্থ হবে।
আপনার যদি এখনও কিছু পুরানো রেফারেন্স (ট্যাগ, শাখা, রিমোট হেড) থাকে যা পুরানো কমিটগুলিকে নির্দেশ করে তবে সেগুলি পরিষ্কার করা হবে না এবং আপনি আরও ডিস্কের স্থান সংরক্ষণ করতে পারবেন না।
git filter-branch --tag-name-filter cat -- --all
ট্যাগগুলি আপডেট করার জন্য আমাকে করতে হয়েছিল । তবে আমি পুরানো ইতিহাসগুলিও মুছে ফেলতে চাইছি সেই পুরানো ইতিহাসের দিকে ইঙ্গিত করে। আমি কীভাবে এই সমস্ত পুরানো ট্যাগগুলি থেকে মুক্তি পেতে পারি? আমি যদি এগুলি মুছতে না পারি তবে পুরানো ইতিহাস অদৃশ্য হবে না এবং আমি এটির সাথে এখনও দেখতে পাচ্ছিgitk --all
।