Git revert = إلغاء إيداع واحد بإنشاء إيداع جديد عكسي.
المفهوم الأساسي:
تشبيه: كأن تقول علناً «عذراً، أسحب ما قلته».
| الجانب | git revert | git reset |
|---|---|---|
| السجل | محفوظ | معدَّل/محذوف |
| الأمان | آمن في الفريق | خطير إن كان مشتركاً |
| الطريقة | إيداع عكسي جديد | الرجوع في الزمن |
| القابلية للتتبّع | يظهر أنه أُلغي | كأن الأمر لم يحدث قط |
قاعدة بسيطة:
revertresetmkdir 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 # التحقق من المحتوىأوضاع نموذجية:
خطأ في الإنتاج:
git revert <commit-buggy> # إلغاء نظيف
git push origin main # إصلاح فوريالميزة تسبّب مشكلة:
git revert <commit-feature> # سحب الميزة
# الاحتفاظ بالسجل لاحقاًإلغاء عدة إيداعات:
git revert <commit1> <commit2> <commit3>
# أو دفعة واحدة:
git revert <oldest-commit>..<newest-commit>Revert = شبكة أمانك عندما تسوء الأمور!