git fsck
الإدارة
التحقق من المستودع والعثور على كائنات غير قابلة للوصول
يتحقق الأمر 'git fsck' (file system check) من أن كل كائن في المستودع سليم وأن السجل متصل بالكامل. ويبلّغ أيضًا عن الكائنات اليتيمة (dangling) — commits وملفات لم يعد شيء يشير إليها، مثل commit تركه git reset --hard بعد أن نسيه الـ reflog. يمكن استرجاعها حتى يحذفها git gc.
الصيغة
git fsck [--unreachable] [--no-reflogs] [--lost-found] [--full] [<object>...][ ] اختياري| أو<arg> قيمة تُستبدل... قابل للتكرار--flag خيار
الخيارات
اختيار الخيار المناسب
العثور على عمل مفقود
جرّب الـ reflog أولًا
| الأمر | يجد |
|---|---|
git reflog | كل مكان مرّ به HEAD (الأسهل) |
git fsck --no-reflogs | commits لا يصل إليها أي مرجع |
git fsck --lost-found | وأيضًا الملفات اليتيمة (مثلًا جُهِّزت ثم ضاعت) |
أمثلة
تحقّق
git fsckصامت حين يكون كل شيء سليمًا.
العثور على commits مفقودة
git fsck --no-reflogscommits لا يصل إليها أي فرع أو وسم.
جمعها
git fsck --lost-foundينسخها إلى .git/lost-found.
أمثلة على سير العمل
1
git fsck --no-reflogsالعثور على commits يتيمة
2
git show <hash>فحصه
3
git branch rescue <hash>الاحتفاظ به
حل المشكلات
error: object file … is empty / corrupt
السبب: تلف من القرص أو من انهيار
اجلب نسخة جديدة من المستودع البعيد؛ واحتفظ بنسخة من .git أولًا
نصائح وأخطاء شائعة
أفضل الممارسات
- ✓شغّل git fsck حين تشك في وجود تلف، قبل git gc.
أخطاء متكررة
- ✗الذعر من الكائنات «dangling» — إنها بقايا عادية ينظّفها git gc.
الأسئلة الشائعة
A:
commit لا يشير إليه شيء. يُحتفظ به حتى يزيله git gc (افتراضيًا بعد انتهاء مُدخل الـ reflog).