git gc

الإدارة

تنظيف المستودع وتحسينه


يحزم الأمر 'git gc' ‏(garbage collection) الكائنات المتفرّقة في ملفات حزم مضغوطة، ويزيل الكائنات التي لم يعد شيء يشير إليها (بعد مهلتها)، ويرتّب المراجع والـ reflogs. يشغّل Git نسخة خفيفة منه تلقائيًا؛ ونادرًا ما تحتاجه يدويًا. يغيّر التخزين فقط — لا commits ولا فروع ولا ملفات.

الصيغة

git gc [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune]
[ ] اختياري| أو<arg> قيمة تُستبدل... قابل للتكرار--flag خيار

أمثلة

الترتيب

git gc

الحزم والتنظيف.


إزالة الكائنات غير القابلة للوصول الآن

git gc --prune=now

يحذف الـ commits المفقودة فورًا أيضًا (احذر).

أمثلة على سير العمل

1
git reflog expire --expire=now --all

نسيان المواضع القديمة

2
git gc --prune=now --aggressive

الحذف وإعادة الحزم

حل المشكلات

رسالة "Auto packing the repository…"

السبب: شغّل Git الأمر gc تلقائيًا

لا شيء لتفعله؛ هذا يبقي المستودع سريعًا

نصائح وأخطاء شائعة

أفضل الممارسات

  • ✓دع Git يشغّله تلقائيًا، أو جدول git maintenance.

أخطاء متكررة

  • ✗تشغيل git gc --prune=now على أمل استرجاع commit مفقود — إنه يحذفه.

الأسئلة الشائعة

A:

فقط الكائنات غير القابلة للوصول الأقدم من المهلة (أسبوعان افتراضيًا)؛ الـ commits القابلة للوصول لا تُمسّ أبدًا.