প্রো গিট বইয়ের অধ্যায় 9 এর অবজেক্টগুলি সরানোর বিষয়ে একটি বিভাগ রয়েছে ।
আমাকে পদক্ষেপগুলি এখানে সংক্ষেপে রূপরেখা দিন:
git filter-branch --index-filter \
'git rm --cached --ignore-unmatch path/to/mylarge_50mb_file' \
--tag-name-filter cat -- --all
পূর্বে বর্ণিত রিবিজিং বিকল্পের মতো filter-branchপুনরায় লেখার কাজ। আপনি যদি ইতিহাস প্রকাশ করেন তবে আপনাকে --forceনতুন রেফগুলি চাপতে হবে।
filter-branchপদ্ধতির চেয়ে যথেষ্ট বেশি শক্তিশালী rebaseপদ্ধতির, এটা যেহেতু
- আপনাকে একবারে সমস্ত শাখা / রেফগুলিতে কাজ করার অনুমতি দেয়,
- ফ্লাইতে যে কোনও ট্যাগের নাম পরিবর্তন করে
- ফাইল সংযোজন থেকে বেশ কয়েকটি মার্জ কমিট হয়ে গেলেও পরিষ্কারভাবে পরিচালনা করে
- ফাইলটি (পুনরায়) যুক্ত করা / মুছে ফেলা (ক) শাখার (এস) ইতিহাসে বেশ কয়েকবার মুছে ফেলা হলেও পরিষ্কারভাবে কাজ করে
- নতুন, সম্পর্কযুক্ত কমিট তৈরি করে না, বরং তাদের সাথে যুক্ত গাছগুলি সংশোধন করার সময় সেগুলি অনুলিপি করে। এর অর্থ স্বাক্ষরিত কমিট, কমিট নোট ইত্যাদির মতো জিনিসগুলি সংরক্ষণ করা হয়
filter-branch ব্যাকআপগুলিও রাখে, সুতরাং আপনি রেফ্লোগগুলি এবং আবর্জনা সংগ্রহের মেয়াদ শেষ না করা অবধি অবিলম্বে রেপোর আকার হ্রাস পাবে না:
rm -Rf .git/refs/original # careful
git gc --aggressive --prune=now # danger