0Pricing
DevOps Bootcamp · درس

Git Reflog واستعادة السجل

أتقن `git reflog` لاستعادة الالتزامات أو الفروع المفقودة، بما يوفر شبكة أمان لأعمالك

Git Reflog واستعادة السجل درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 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) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

ماذا ستتعلم في «Git Reflog واستعادة السجل»؟

أتقن `git reflog` لاستعادة الالتزامات أو الفروع المفقودة، بما يوفر شبكة أمان لأعمالك تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟

لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «Git Reflog واستعادة السجل»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟

نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Git Reflog واستعادة السجل
  2. Git Bisect لتنقيح الأخطاء
  3. صيانة المستودع وترتيبه
  4. إعادة كتابة السجل باستخدام git filter-repo
← العودة إلى DevOps Bootcamp