এই এসও উত্তরে উল্লিখিত হিসাবে , git gcআসলে রেপোর আকার বাড়াতে পারে!
আরও দেখুন এই থ্রেড
এখন Git করার জন্য একটি সুরক্ষা প্রক্রিয়া হয়েছে না এখুনি যখন 'চলমান ডিলিট unreferenced বস্তু git gc।
ডিফল্টরূপে অবাস্তবহীন অবজেক্টগুলি 2 সপ্তাহের জন্য রাখা হয়। এটি আপনার দুর্ঘটনাক্রমে মুছে ফেলা শাখাগুলি বা কমান্ডগুলি পুনরুদ্ধার করা বা এমন একটি জাতি এড়ানোর পক্ষে তৈরি করা যায় যেখানে সক্রিয়ভাবে তৈরি হওয়া সত্ত্বেও এখনও রেফারেন্স না পাওয়া একটি git gcসমান্তরালে চলমান একটি ' ' প্রক্রিয়া দ্বারা মুছে ফেলা যায় ।
সুতরাং প্যাকড परंतु অরক্ষিত অবজেক্টগুলিকে এই গ্রেস পিরিয়ড দেওয়ার জন্য, পুনরায় প্রক্রিয়া প্রক্রিয়াটি সেই অযৌক্তিক অবজেক্টগুলিকে প্যাকের বাইরে তাদের আলগা আকারে ঠেলে দেয় যাতে তারা বৃদ্ধ হতে পারে এবং শেষ পর্যন্ত ছাঁটাই করা যায়।
অবাস্তব হয়ে ওঠা জিনিসগুলি সাধারণত এমন অনেকগুলি নয়। 404855 অবাস্তব অবজেক্ট থাকা যথেষ্ট, এবং ক্লোন হয়ে প্রথম স্থানগুলিতে objects অবজেক্টগুলি প্রেরণ করা বোকামি এবং নেটওয়ার্ক ব্যান্ডউইদথের সম্পূর্ণ অপচয়।
যাইহোক ... আপনার সমস্যা সমাধানের জন্য, আপনাকে সেই গ্রেড পিরিয়ডটি অক্ষম করার এবং তাত্ক্ষণিক those অপ্রয়োজনীয় বিষয়গুলি থেকে মুক্তি পাওয়ার পক্ষে যুক্তি git gcদিয়ে 'চালানো দরকার --prune=now(অন্য কোনও গিট কার্যক্রম একই সময়ে সংঘটিত হয় যা কেবল তখনই নিরাপদ) একটি ওয়ার্কস্টেশন নিশ্চিত করতে সহজ হতে হবে)।
এবং বিটিডাব্লু, git gc --aggressiveপরবর্তী গিট সংস্করণ (বা ' git repack -a -f -d --window=250 --depth=250') দিয়ে ' ' ব্যবহার করে
একই থ্রেড উল্লেখ :
git config pack.deltaCacheSize 1
এটি ডেল্টা ক্যাশের আকারকে 0 এর ডিফল্ট পরিবর্তে এক বাইটের (কার্যকরভাবে এটি অক্ষম করে) সীমাবদ্ধ করে যার অর্থ সীমাহীন means এর সাথে আমি উপরের git repackকমান্ডটি x86-64 সিস্টেমে 4 গিগাবাইট র্যামের সাহায্যে 4 টি থ্রেড ব্যবহার করে (এটি একটি কোয়াড কোর) সেই সংগ্রহস্থলটি পুনরায় তুলতে সক্ষম হয়েছি । যদিও আবাসিক মেমরির ব্যবহার প্রায় 3.3 গিগাবাইটে বৃদ্ধি পায়।
যদি আপনার মেশিনটি এসএমপি হয় এবং আপনার পর্যাপ্ত র্যাম না থাকে তবে আপনি কেবল থ্রেডের সংখ্যা হ্রাস করতে পারেন:
git config pack.threads 1
অতিরিক্তভাবে, আপনি আরও --window-memory argument' git repack' এর সাহায্যে মেমরির ব্যবহার সীমিত করতে পারেন ।
উদাহরণস্বরূপ, ব্যবহারের --window-memory=128Mজন্য ডেল্টা অনুসন্ধান মেমরির ব্যবহারের উপর যুক্তিসঙ্গত উপরের আবদ্ধ রাখা উচিত যদিও রেপোতে প্রচুর পরিমাণে বড় ফাইল উপস্থিত থাকলে এটি কম অনুকূল ব-দ্বীপ মিলিত হতে পারে।
ফিল্টার-শাখার সম্মুখভাগে, আপনি এই স্ক্রিপ্টটি (সতর্কতার সাথে) বিবেচনা করতে পারেন
#!/bin/bash
set -o errexit
# Author: David Underhill
# Script to permanently delete files/folders from your git repository. To use
# it, cd to your repository's root and then run the script with a list of paths
# you want to delete, e.g., git-delete-history path1 path2
if [ $# -eq 0 ]; then
exit 0
fi
# make sure we're at the root of git repo
if [ ! -d .git ]; then
echo "Error: must run this script from the root of a git repository"
exit 1
fi
# remove all paths passed as arguments from the history of the repo
files=$@
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $files" HEAD
# remove the temporary history git-filter-branch otherwise leaves behind for a long time
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune