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 خيار

الخيارات

انقر على أي خيار لتوسيعه

مبتدئ (2)

عدم احتساب مُدخلات الـ reflog كمراجع: الإبلاغ عن commits لا يتذكّرها إلا الـ reflog.

عند الحاجةسرد الـ commits التي يبقيها الـ reflog وحده حيّة

مثال

git fsck --no-reflogs

كتابة الكائنات اليتيمة في .git/lost-found (يستلزم --no-reflogs).

عند الحاجةجمع الكائنات المفقودة في مكان واحد

مثال

git fsck --lost-found

اختيار الخيار المناسب

العثور على عمل مفقود

جرّب الـ reflog أولًا

الأمريجد
git reflogكل مكان مرّ به HEAD (الأسهل)
git fsck --no-reflogscommits لا يصل إليها أي مرجع
git fsck --lost-foundوأيضًا الملفات اليتيمة (مثلًا جُهِّزت ثم ضاعت)

أمثلة

تحقّق

git fsck

صامت حين يكون كل شيء سليمًا.


العثور على commits مفقودة

git fsck --no-reflogs

commits لا يصل إليها أي فرع أو وسم.


جمعها

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).