غيّرت الفرع وضاع منك الالتزام؟ استخدم Git reflog للبحث أولًا
دليل بحث آمن عن التزامات محلية سابقة، دون reset إجباري أو الكتابة فوق ملفاتك الحالية، مع مثال تدريبي منفصل.

اختفاء التزام من سجل الفرع الحالي لا يعني دائمًا اختفاء الكائن من مستودعك المحلي. يسجل reflog تحركات المراجع محليًا، ويساعدك على معرفة أين كان HEAD قبل التبديل أو إعادة ترتيب التاريخ.
ابدأ بالقراءة فقط
git status git reflog --date=iso git show --stat <commit-id>
الأوامر هنا للاستعراض. استبدل commit-id بالمعرف الذي وجدته بعد مراجعة الرسالة والتوقيت والملفات. لا تنسخ مثالًا بمعرف عشوائي، ولا تستخدم reset --hard لاستكشاف ما إذا كان هو الالتزام المطلوب.
احفظ الإشارة دون تبديل عملك
git branch recovered-work <commit-id>
إن ثبت أن الالتزام صحيح، ينشئ الأمر فرعًا يشير إليه دون تبديل الفرع الحالي. اختر اسمًا جديدًا غير مستخدم؛ ثم راجع الفرق وخطتك لدمج العمل قبل أي نقل أو استبدال للملفات.
حدود مهمة
- السجل محلي؛ لا تفترض أن جهازًا آخر يملك التواريخ نفسها.
- العثور على التزام لا يعيد ملفًا لم يُحفظ فيه أصلًا.
- قد تنتهي صلاحية سجلات reflog وتُزال كائنات غير قابلة للوصول؛ ليست نسخة احتياطية دائمة.
- لا تشغّل تنظيفًا أو حذفًا أو force push أثناء محاولة الاستعادة.
جرّبه قبل أن تحتاجه
أنشئ مستودعًا تدريبيًا منفصلًا بملف نصي والتزامين، وبدل الفرع ثم ابحث عن المعرفات. المثال اختُبر في مستودع مؤقت لهذه المقالة؛ لا يعني أن ملفات مشروعك الفعلية قابلة للاستعادة بالطريقة نفسها.
المصادر والمراجع
دليل أصلي من B52؛ راجع الروابط للمعلومات المرجعية.


