Git Reflog واستعادة السجل
أتقن `git reflog` لاستعادة الالتزامات أو الفروع المفقودة، بما يوفر شبكة أمان لأعمالك
Git Reflog واستعادة السجل درس مجاني في Git & GitHub Professional Workflow على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Git & GitHub Professional Workflow، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Git & GitHub Professional Workflow 4 دروس في المجموع.
ما هو Git Reflog؟
هل حذفت فرعًا عن طريق الخطأ أو أعدت الضبط إلى commit غير صحيح؟ لا داعي للقلق! يوفّر Git شبكة أمان قوية تُسمى Reflog.
إن reflog (سجل المراجع) هو سجلّ يوضّح المواضع التي كان فيها HEAD ومؤشرات الفروع في مستودعك المحلي.
كيف يتتبّع Reflog السجل
على عكس سجل الـ commit (git log) الذي يتتبّع التغييرات في ملفات مشروعك، يتتبّع reflog التغييرات التي تطرأ على المراجع في مستودعك.
في كل مرة يتحرك فيها HEAD (الـ commit الحالي) أو مؤشر فرع، يسجّل Git هذا الحدث في reflog. ويشمل ذلك:
- إجراء commit للتغييرات
- التبديل بين الفروع
- إجراء الدمج أو rebase
- تنفيذ reset
- استنساخ مستودع
عرض Reflog الخاص بك
لعرض reflog الخاص بك، استخدم الأمر git reflog ببساطة. يعرض الأمر قائمة بالإجراءات وحالة HEAD في وقت كل منها.
لنحاكِ بعض الإجراءات ثم نعرض reflog:
git init my_repo
cd my_repo
echo "First line" > file.txt
git add file.txt
git commit -m "Initial commit"
echo "Second line" >> file.txt
git add file.txt
git commit -m "Add second line"
git reflogفك ترميز إدخالات Reflog
يملك كل إدخال في reflog تنسيقًا محددًا. لنفصّل إدخالًا نموذجيًا قد تراه:
a1b2c3d HEAD@{0}: commit: Add new feature
a1b2c3d: تجزئة SHA-1 للـ commit الذي كان عندهHEADفي ذلك الوقت.HEAD@{0}: هذا هو «مؤشر إدخال reflog». تمثل@{0}أحدث حالة، وتمثل@{1}الحالة السابقة لها، وهكذا.commit: Add new feature: وصف للإجراء الذي تسبب في تحركHEAD.
هذه المؤشرات ضرورية للاسترداد!
سيناريو: استرداد commit مفقود
تخيّل أنك أجريت commit، ثم ألغيتَه عن طريق الخطأ باستخدام git reset --soft HEAD~1. لم يعد commit موجودًا في سجل فرعك الحالي، لكنه لم يختفِ فعليًا!
يتذكره reflog. لنحاكِ هذا الخطأ الشائع:
git init my_project_recovery
cd my_project_recovery
echo "Initial content" > start.txt
git add start.txt
git commit -m "Initial commit"
echo "Important feature" > feature.txt
git add feature.txt
git commit -m "Added an important feature"
# Oops! Accidentally reset
git reset --soft HEAD~1
git reflogإعادة commit
بعد إجراء reset، إذا شغّلت git reflog، فسترى إدخالًا للـ commit «Added an important feature»، وربما يكون مثل HEAD@{1} أو ما شابه.
لاسترداده، يمكنك استخدام git reset مع إدخال reflog. فمثلًا، إذا كانت تجزئة commit المفقود هي abcdefg أو كان إدخال reflog الخاص به هو HEAD@{1}:
# Assuming the lost commit was HEAD@{1} in the reflog
git reset --hard HEAD@{1}
# Or using the specific commit hash from reflog
# git reset --hard abcdefg
# Now, check your log. The commit is back!
git log --onelineسيناريو: استرداد فرع محذوف
ماذا لو حذفت فرعًا كاملًا عن طريق الخطأ قبل دمجه، أو ظننت أنك لم تعد بحاجة إليه؟
الفروع ليست سوى مؤشرات إلى commits. عند حذف فرع، لا تُزال الـ commits التي كان يشير إليها من مستودعك فورًا. فما زال reflog يتذكر موضع HEAD الخاص بذلك الفرع!
استعادة فرع من Reflog
لنفترض أن لديك فرعًا باسم feature-x، وعملت عليه، ثم حذفته باستخدام git branch -D feature-x.
عند تشغيل git reflog، قد ترى إدخالًا مثل:
1234567 HEAD@{5}: branch: Created branch feature-x أوabcdefg HEAD@{2}: checkout: moving from feature-x to master
يمكنك استخدام تجزئة الـ commit (مثل 1234567 أو abcdefg) من إدخال reflog الذي كان الفرع نشطًا عنده لإعادة إنشائه:
# Assume 'feature-x' was deleted and its last commit was '1234567'
# Create a new branch pointing to that commit
git branch feature-x-recovered 1234567
# Now, check out your recovered branch
git checkout feature-x-recovered
# Verify its history
git log --onelineتنتهي صلاحية إدخالات Reflog
رغم أن reflog شبكة أمان قوية، فإن إدخالاته لا تبقى إلى الأبد. يحذف Git إدخالات reflog القديمة بعد مدة محددة.
- تنتهي صلاحية الإدخالات التي يمكن الوصول إليها (من
HEADالحالي) بعد 90 يومًا افتراضيًا. - تنتهي صلاحية الإدخالات التي يتعذر الوصول إليها (مثل الإدخالات القادمة من فروع محذوفة أو commits لم تعد هناك مراجع إليها) بعد 30 يومًا.
لذلك من الأفضل استرداد العمل «المفقود» عاجلًا لا آجلًا!
تحدي استرداد Reflog
أنشأت فرعًا جديدًا لميزة، وأجريت عدة commits، ثم حذفته عن طريق الخطأ من دون دمجه. شغّلت git reflog ورأيت الإدخال التالي:
...
c0ffee1 HEAD@{3}: commit: Implement new user profile page
bada55e HEAD@{4}: checkout: moving from feature/profile to main
...ما تسلسل الأوامر الذي سيعيد إنشاء فرع feature/profile بشكل صحيح، مع توجيهه إلى أحدث commit كان يحتوي عليه قبل حذفه؟
Reflog: شبكة أمان Git الخاصة بك
لقد أتقنت استخدام git reflog، وهي أداة أساسية لاسترداد العمل «المفقود» في مستودع Git المحلي. تذكّر ما يلي:
- يتتبّع المواضع التي كان فيها
HEADومؤشرات الفروع. - استخدم
git reflogلعرض هذا السجل. - يمكنك استرداد commits أو فروع باستخدام
git resetأوgit branchمع إدخالات reflog (HEAD@{n}أو تجزئات commits). - تنتهي صلاحية إدخالات reflog، لذا بادر بسرعة إذا احتجت إلى استرداد شيء ما!
حافظ على نظافة سجل Git، لكن تذكّر أن reflog موجود لحالات الطوارئ!
الأسئلة الشائعة
هل درس «Git Reflog واستعادة السجل» مجاني؟
نعم — نص درس «Git Reflog واستعادة السجل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Git & GitHub Professional Workflow، انتقل إلى CoddyKit PRO. تتضمن دورة Git & GitHub Professional Workflow 4 دروس في المجموع.
ماذا ستتعلم في «Git Reflog واستعادة السجل»؟
أتقن `git reflog` لاستعادة الالتزامات أو الفروع المفقودة، بما يوفر شبكة أمان لأعمالك تتمرن على Git & GitHub Professional Workflow مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Git & GitHub Professional Workflow؟
لا تُشترط خبرة سابقة. Git & GitHub Professional Workflow على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «Git Reflog واستعادة السجل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Git & GitHub Professional Workflow هذا؟
نعم. كل درس في Git & GitHub Professional Workflow يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Git Reflog واستعادة السجل
- Git Bisect لتنقيح الأخطاء
- صيانة المستودع وترتيبه
- إعادة كتابة السجل باستخدام git filter-repo