Git Reset - تمرين عملي

1 دقيقة

جدول المحتويات

  1. إعداد التمرين
  2. التمرين 1: Reset soft
  3. التمرين 2: Reset mixed
  4. التمرين 3: Reset hard
  5. التحقق

1. إعداد التمرين

bash
mkdir exercice-reset && cd exercice-reset
git init

# إنشاء عدة إيداعات للاختبار
echo "print('v1')" > app.py && git add . && git commit -m "Version 1"
echo "print('v2')" > app.py && git add . && git commit -m "Version 2"
echo "print('v3')" > app.py && git add . && git commit -m "Version 3"
echo "print('v4')" > app.py && git add . && git commit -m "Version 4"

git log --oneline    # سجّل التجزئات

العودة إلى جدول المحتويات

2. التمرين 1: Reset soft

الهدف: الرجوع إيداعين إلى الخلف، مع الإبقاء على التغييرات مجهّزة.

bash
git reset --soft HEAD~2

# تحققات
git status           # تغييرات في منطقة التجهيز؟
cat app.py          # أي محتوى؟
git log --oneline   # كم إيداعاً؟

النتيجة المتوقعة:

  • الملف: يحتوي v4
  • الحالة: تعديلات مجهّزة للإيداع
  • السجل: إيداعان (v1، v2)

العودة إلى جدول المحتويات

3. التمرين 2: Reset mixed

إعادة ضبط ثم اختبار mixed:

bash
git commit -m "Re-commit v4"    # إعادة v4
git reset --mixed HEAD~1        # الرجوع إيداعاً واحداً (الوضع الافتراضي)

# تحققات
git status           # تغييرات غير مجهّزة؟
cat app.py          # أي محتوى؟
git log --oneline   # كم إيداعاً؟

النتيجة المتوقعة:

  • الملف: يحتوي v4
  • الحالة: تعديلات غير مجهّزة
  • السجل: 3 إيداعات (v1، v2، v3)

العودة إلى جدول المحتويات

4. التمرين 3: Reset hard

انتبه: Reset hard = مدمّر!

bash
git add .                    # تجهيز التغييرات
git commit -m "Re-commit v4" # إعادة v4
git reset --hard HEAD~2      # حذف كل شيء، الرجوع إيداعين

# تحققات
git status           # دليل العمل نظيف؟
cat app.py          # أي محتوى؟
git log --oneline   # كم إيداعاً؟

النتيجة المتوقعة:

  • الملف: يحتوي v2
  • الحالة: nothing to commit
  • السجل: إيداعان (v1، v2)

العودة إلى جدول المحتويات

5. التحقق

ملخص الأوضاع الثلاثة:

الوضعالإيداعاتالتجهيزدليل العمل
--softيتراجعيحتفظيحتفظ
--mixedيتراجعيحذفيحتفظ
--hardيتراجعيحذفيحذف

فهمت الأوضاع الثلاثة؟ ممتاز! لم يعد لـ reset أسرار.

العودة إلى جدول المحتويات