git gc
تنظيف المستودع وتحسينه
يحزم الأمر 'git gc' (garbage collection) الكائنات المتفرّقة في ملفات حزم مضغوطة، ويزيل الكائنات التي لم يعد شيء يشير إليها (بعد مهلتها)، ويرتّب المراجع والـ reflogs. يشغّل Git نسخة خفيفة منه تلقائيًا؛ ونادرًا ما تحتاجه يدويًا. يغيّر التخزين فقط — لا commits ولا فروع ولا ملفات.
الصيغة
git gc [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune]أمثلة
الترتيب
git gcالحزم والتنظيف.
إزالة الكائنات غير القابلة للوصول الآن
git gc --prune=nowيحذف الـ commits المفقودة فورًا أيضًا (احذر).
أمثلة على سير العمل
git reflog expire --expire=now --allنسيان المواضع القديمة
git gc --prune=now --aggressiveالحذف وإعادة الحزم
حل المشكلات
رسالة "Auto packing the repository…"
السبب: شغّل Git الأمر gc تلقائيًا
لا شيء لتفعله؛ هذا يبقي المستودع سريعًا
نصائح وأخطاء شائعة
أفضل الممارسات
- ✓دع Git يشغّله تلقائيًا، أو جدول git maintenance.
أخطاء متكررة
- ✗تشغيل git gc --prune=now على أمل استرجاع commit مفقود — إنه يحذفه.
الأسئلة الشائعة
فقط الكائنات غير القابلة للوصول الأقدم من المهلة (أسبوعان افتراضيًا)؛ الـ commits القابلة للوصول لا تُمسّ أبدًا.