Git Revert
آخر تحديث
git revert يتراجع عن كوميت عبر إنشاء كوميت جديد يطبّق عكس تغييراته. ولأنه يضيف إلى السجل بدلًا من إعادة كتابته، فإن revert هو الطريقة الآمنة للتراجع عن كوميت تم دفعه بالفعل - وعلى خلاف git reset، فإنه لا يجبر الجميع على التوفيق مع فرع أُعيدت كتابته.
جرّب هذه الأوامر في ساحة الطرفية - صدفة حقيقية في متصفحك، دون أي شيء لتثبيته.
الصياغة
| Command | What it does |
|---|---|
git revert HEAD | يتراجع عن أحدث كوميت |
git revert <hash> | يتراجع عن كوميت محدد باستخدام الهاش |
git revert HEAD~2..HEAD | يتراجع عن نطاق من الكوميتات |
git revert -n <hash> | يتراجع لكن دون عمل كوميت بعد (يهيّئ فقط) |
git revert -m 1 <merge-hash> | يتراجع عن كوميت دمج مع الإبقاء على الأصل 1 |
أثناء التراجع
إذا واجه التراجع تعارضًا، فحُلّه ثم تابع.
| Command | What it does |
|---|---|
git revert --continue | يستأنف بعد حل التعارضات |
git revert --abort | يلغي التراجع الجاري |
git revert --skip | يتخطى الكوميت الحالي ويتابع |
revert vs reset
| Behavior | git revert | git reset |
|---|---|---|
| يعيد كتابة السجل | لا | نعم |
| آمن على الكوميتات المدفوعة | نعم | لا |
| ينشئ كوميت جديد | نعم | لا |
| يتراجع عن كوميت في المنتصف | نعم | متعب |
الأسئلة الشائعة حول git revert
ما الفرق بين git revert و git reset؟
git revert يضيف كوميتًا جديدًا يتراجع عن تغييرات كوميت أقدم، مع إبقاء السجل سليمًا - وهو آمن للكوميتات التي دفعتها بالفعل. أما git reset فينقل مؤشر فرعك إلى الوراء ويعيد كتابة السجل، وهذا مقبول للكوميتات المحلية لكنه خطير على الفروع المشتركة. استخدم revert للتراجع عن الكوميتات العامة، و reset للتراجع عن الكوميتات المحلية.كيف أتراجع عن كوميت تم دفعه بالفعل؟
شغّل
git revert <hash> (أو git revert HEAD للأحدث)، ثم ادفع كوميت التراجع الجديد. ولأن revert لا يعيد كتابة السجل، فهذه هي الطريقة الصحيحة للتراجع عن كوميت مشترك - دون force-push ودون إرباك لزملاء الفريق الذين سحبوه بالفعل.كيف أتراجع عن كوميت دمج؟
كوميت الدمج له أصلان، لذا يحتاج Git إلى معرفة أي خط من السجل ينبغي الإبقاء عليه. استخدم
git revert -m 1 <merge-hash>، حيث يخبر -m 1 الـ Git بأن يبقي على الأصل الأول (وهو عادةً الفرع الذي دمجت داخله). التراجع عن الدمج يلغي التغييرات المدموجة لكنه يبقي الدمج في السجل.هل يمكنني التراجع عن عدة كوميتات دفعة واحدة؟
نعم. مرّر نطاقًا مثل
git revert HEAD~2..HEAD للتراجع عن آخر كوميتين، أو اذكر عدة هاشات. ينشئ Git افتراضيًا كوميت تراجع واحدًا لكل كوميت تم التراجع عنه؛ أضف -n لتهيئة كل عمليات التراجع دون عمل كوميت، ثم أنشئ أنت كوميتًا واحدًا بنفسك.هل يمكنني التدرب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية لتشغيل
git revert في صدفة حقيقية داخل متصفحك - دون أي شيء لتثبيته. كما يغطي كورس Git التفاعلي المجاني من Coddy التراجع عن التغييرات خطوة بخطوة.