Git Revert

1 دقيقة

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

  1. ما هو revert؟
  2. Revert مقابل reset
  3. ممارسة فورية
  4. حالات الاستخدام

1. ما هو revert؟

Git revert = إلغاء إيداع واحد بإنشاء إيداع جديد عكسي.

المفهوم الأساسي:

  • لا يحذف السجل
  • ينشئ إيداعاً «يفك» التغييرات
  • آمن للعمل ضمن فريق

تشبيه: كأن تقول علناً «عذراً، أسحب ما قلته».

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

2. Revert مقابل reset

الجانبgit revertgit reset
السجلمحفوظمعدَّل/محذوف
الأمانآمن في الفريقخطير إن كان مشتركاً
الطريقةإيداع عكسي جديدالرجوع في الزمن
القابلية للتتبّعيظهر أنه أُلغيكأن الأمر لم يحدث قط

قاعدة بسيطة:

  • إيداع سبق مشاركته → revert
  • إيداع ما زال محلياً → reset

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

3. ممارسة فورية

bash
mkdir demo-revert && cd demo-revert
git init

echo "print('Version 1')" > app.py
git add . && git commit -m "Version 1"

echo "print('Version 2 - Bug!')" > app.py
git add . && git commit -m "Version 2 avec bug"

echo "print('Version 3')" > app.py
git add . && git commit -m "Version 3"

# عذراً! الإصدار 2 كان فيه خطأ
git log --oneline              # عرض السجل
git revert <hash-version-2>    # إلغاء الإصدار 2 فقط

# النتيجة: الإصدار 3 يبقى، لكن خطأ v2 أُلغي!
cat app.py                     # التحقق من المحتوى

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

4. حالات الاستخدام

أوضاع نموذجية:

  1. خطأ في الإنتاج:

    bash
    git revert <commit-buggy>    # إلغاء نظيف
    git push origin main         # إصلاح فوري
  2. الميزة تسبّب مشكلة:

    bash
    git revert <commit-feature>  # سحب الميزة
    # الاحتفاظ بالسجل لاحقاً
  3. إلغاء عدة إيداعات:

    bash
    git revert <commit1> <commit2> <commit3>
    # أو دفعة واحدة:
    git revert <oldest-commit>..<newest-commit>

Revert = شبكة أمانك عندما تسوء الأمور!

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