انتقل إلى محتوى الدرس

Rescuing Commits with reflog الإنقاذ عبر سجل git reflog

أتقن آلية عمل git reset على المناطق الثلاث بأوضاعه --soft و--mixed و--hard، وتعلّم إنقاذ الالتزامات المفقودة عبر سجل الحركات المرجعي git reflog.
1 صفوف تعليمية
Version Control
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

ماذا لو نفذت الأمر git reset --hard HEAD~1 ثم أدركت فوراً أنك بحاجة ماسة إلى الالتزام الذي حذفته؟ طالما أن الكود قد حُفظ في التزام محلي سابق، فإن Git يوفر صندوقاً أسود يسجل كافة الحركات يُسمى السجل المرجعي (git reflog).

ففي كل مرة يتحرك فيها المؤشر HEAD بسبب التزام أو تعديل أو إعادة ضبط، يوثق Git تلك الحركة بالترتيب تحت الرموز HEAD@{0} ثم HEAD@{1}. وبمجرد نسخ بصمة الالتزام المفقود من مخرجات git reflog وتمريرها إلى git reset --hard <hash>، يعود الالتزام المحذوف كاملاً.

Shell
# Inspect local reference movement history
git reflog -n 4
# 9f8e7d6 HEAD@{0}: reset: moving to HEAD~1
# c3d4e5f HEAD@{1}: commit: feat: add contact section
# Rescue the lost commit using its SHA-1 or HEAD@{1}
git reset --hard c3d4e5f