Git Reflog
آخر تحديث
يسجّل git reflog كل موضع أشار إليه HEAD - كل commit وcheckout وreset وrebase. ولأن Git يحتفظ بتلك الـ commits لبعض الوقت حتى بعد أن تغادر فروعك، فإن الـ reflog هو شبكة الأمان الخاصة بك: فهو يتيح لك العثور على العمل الذي بدا أن reset --hard أو rebase سيئ أو فرع محذوف قد دمّره، واستعادته.
جرّب هذه الأوامر في ساحة الطرفية - صدفة حقيقية داخل متصفحك، دون الحاجة إلى تثبيت أي شيء.
الصيغة
| Command | What it does |
|---|---|
git reflog | يعرض المواضع الأخيرة لـ HEAD مع الـ hashes |
git reflog show <branch> | يعرض الـ reflog الخاص بفرع |
git reset --hard HEAD@{1} | يعيد HEAD إلى موضع سابق |
git branch recovered <hash> | يعيد إنشاء فرع عند commit مفقود |
الاسترداد بعد خطأ
تراجع عن reset خاطئ بالعثور على الـ commit الذي كان قبل الـ reset.
| Step | Command | Result |
|---|---|---|
| 1 | git reflog | اعثر على الـ commit الذي كان قبل الـ reset |
| 2 | git reset --hard HEAD@{1} | استعد فرعك إليه |
الأسئلة الشائعة حول git reflog
ما هو git reflog؟
إنه سجل لكل المواضع التي أشار إليها
HEAD (وطرف كل فرع) في مستودعك المحلي - بعد الـ commits والـ checkouts والـ resets والـ merges والـ rebases. وعلى عكس git log الذي يتتبع سلسلة أسلاف الـ commits، فإن الـ reflog هو سجل زمني لأفعالك، وهذا ما يجعله مفيدًا للاسترداد.كيف أسترد commit بعد git reset --hard؟
شغّل
git reflog للعثور على مدخل الـ commit الذي كنت عليه قبل الـ reset (شيء مثل HEAD@{1})، ثم استخدم git reset --hard <that-hash> (أو HEAD@{1}) للعودة إليه. لم يُحذف الـ commit فعليًا - فقط لم يعد هناك فرع يشير إليه، ولا يزال الـ reflog يعرف الـ hash الخاص به.كيف أستعيد فرعًا محذوفًا؟
اعثر على آخر commit للفرع في
git reflog، ثم أعد إنشاء الفرع عنده: git branch <name> <hash>. طالما كان الحذف حديثًا (ضمن مدة انتهاء صلاحية reflog في Git، عادةً أسابيع)، تظل الـ commits قابلة للوصول بهذه الطريقة.هل يعمل git reflog عبر النسخ (clones)؟
لا - الـ reflog محلي لمستودعك ولا يُدفع (push) ولا يُستنسخ. إنه يسجّل الأفعال على جهازك فقط. لهذا يمكنه إنقاذ الأخطاء المحلية، لكنه لا يستطيع استرداد شيء لم يوجد إلا في نسخة (clone) أخرى.
هل يمكنني التدرّب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية لتشغيل
git reflog في صدفة حقيقية داخل متصفحك - دون الحاجة إلى تثبيت أي شيء. كما تغطي دورة Git التفاعلية المجانية من Coddy التراجع عن التغييرات والاسترداد خطوة بخطوة.