git revert

اللقطات الأساسية

التراجع عن commit بإنشاء commit جديد


يتراجع الأمر 'git revert' عن commit سابق بإضافة commit جديد يطبّق التغيير المعاكس. لا يُعاد كتابة السجل — يبقى الـ commit الأصلي — لذا فهو الطريقة الآمنة للتراجع عن commits دُفعت وشوركت. قد يحدث تعارض إذا عدّلت commits لاحقة الأسطر نفسها؛ حُلّه ثم نفّذ git revert --continue.

الصيغة

git revert [--[no-]edit] [-n] [-m <parent-number>] <commit>...
git revert (--continue | --skip | --abort | --quit)
[ ] اختياري| أو<arg> قيمة تُستبدل... قابل للتكرار--flag خيار

الخيارات

انقر على أي خيار لتوسيعه

مبتدئ (1)

لا يفتح المحرّر؛ يُبقي الرسالة الافتراضية "Revert …".

موصى بهرسالة الـ revert الافتراضية مناسبة عادةً

مثال

git revert --no-edit HEAD

متوسط (1)

تطبيق التغييرات المعاكسة على مجلد العمل ومنطقة التجهيز دون تسجيل commit.

عند الحاجةجمع عدة عمليات revert في commit واحد

مثال

git revert -n HEAD HEAD~1

متقدم (1)

لـ commit دمج: رقم الأب (عادة 1) الذي يُحتفظ بجانبه.

عند الحاجةالطريقة الوحيدة للتراجع عن commit دمج

مثال

git revert -m 1 HEAD

اختيار الخيار المناسب

revert مقابل reset

طريقتان للتراجع عن commits

الأمرالتاريخآمن بعد الدفع؟
git revert <commit>يضيف commit تراجعنعم
git reset --hard <commit>يزيل commits من الفرعلا — يحتاج دفعًا قسريًا

أمثلة

التراجع عن آخر commit

git revert HEAD

ينشئ commit يتراجع عن HEAD.


التراجع عن commit أقدم

git revert a1b2c3d

يتراجع عن ذلك الـ commit ويُبقي اللاحقة.


التراجع عن دمج

git revert -m 1 <merge-commit>

يتراجع عن التغييرات التي جلبها الدمج.

أمثلة على سير العمل

1
git log --oneline

العثور على الـ commit

2
git revert a1b2c3d

إنشاء commit التراجع

3
git push

مشاركته — دون دفع قسري

حل المشكلات

error: commit is a merge but no -m option was given

السبب: للدمج أبوان

استخدم git revert -m 1 <commit>

تعارض أثناء الـ revert

السبب: عدّلت commits لاحقة الأسطر نفسها

أصلح الملفات، ونفّذ git add، ثم git revert --continue (أو --abort)

نصائح وأخطاء شائعة

أفضل الممارسات

  • ✓استخدم revert للـ commits المشتركة؛ وreset للمحلية فقط.
  • ✓اشرح السبب في رسالة الـ revert.
  • ✓ابدأ بالأحدث عند التراجع عن عدة commits.

أخطاء متكررة

  • ✗استخدام git reset على commits مدفوعة بدل git revert، وإجبار الجميع على إصلاح سجلّهم.
  • ✗التراجع عن دمج دون -m.
  • ✗إعادة دمج فرع تم التراجع عنه والتساؤل لماذا لا تعود تغييراته — تراجع عن الـ revert أولًا.

الأسئلة الشائعة

A:

لا. يضيف commit جديدًا؛ ويبقى الأصلي في السجل.

A:

نعم — فيُعاد تطبيق التغيير الأصلي.

A:

git revert --abort.