طريقة التراجع عن إيداع دمج في Git دون إعادة كتابة السجل
لإيداع الدمج أصلان، لذلك يحتاج Git إلى معرفة الجانب الذي تريد الإبقاء عليه. إليك طريقة اختيار الأصل، والتراجع عن الدمج بأمان في فرع مشترك، وإعادة العمل لاحقًا.
بقلم Kodmora
شركة البرمجيات المطوّرة لـGitTree
- الدمج
- التراجع والاستعادة
- سجل الإيداعات
في هذه الصفحة
للتراجع عن إيداع دمج، نفّذ `git revert -m 1 <merge-commit>`. يطلب -m 1 من Git الإبقاء على الأصل الأول، وهو الفرع الذي دمجت فيه، وإلغاء كل ما جلبه الدمج. يضيف Git إيداعًا جديدًا، فيبقى السجل كما هو ويصبح الإصلاح آمنًا للدفع إلى فرع مشترك.
كيف أتراجع عن إيداع دمج؟
ابحث أولًا عن إيداع الدمج. يظهره الرسم البياني إيداعًا له أصلان:
git log --oneline --graph -10ثم تأكد من أصليه. أول معرّف يُطبع بعد الإيداع هو الأصل 1، والثاني هو الأصل 2:
git log -1 --format="%h parents: %p" <merge-commit>تراجع عنه مع الإبقاء على الأصل 1، وادفع الإيداع الجديد كأي إيداع آخر:
git revert -m 1 <merge-commit>
git pushلا يُعاد كتابة أي شيء، فلا يحتاج أحد إلى إعادة الضبط أو السحب بالقوة. إذا ظهر تعارض، فأصلح الملفات وأضفها إلى منطقة التجهيز ونفّذ git revert --continue. وللإلغاء نفّذ git revert --abort.
لماذا يقول Git إن commit is a merge but no -m option was given؟
للإيداع العادي أصل واحد، فالفرق واضح. أما إيداع الدمج فله أصلان، ولا يعرف git revert <merge-commit> الجانب الذي تريد العودة إليه. يتوقف Git بهذا الخطأ دون تغيير شيء:
error: commit 4f2a9c1 is a merge but no -m option was given.
fatal: revert failedأضف -m مع رقم الأصل ونفّذ الأمر مرة أخرى.
هل أستخدم -m 1 أم -m 2؟
| الخيار | يبقي | متى تستخدمه |
|---|---|---|
-m 1 | الفرع الذي دمجت فيه، مثل main | دُمجت ميزة وتريد إخراجها. هذه هي الحالة المعتادة. |
-m 2 | الفرع الذي جرى دمجه | سحبت main إلى فرع ميزتك وتريد إزالة ما جاء من main. |
كيف أدمج الفرع نفسه مرة أخرى بعد التراجع؟
هنا الفخ. تقول وثائق Git إن التراجع عن الدمج يعلن أنك لن تريد أبدًا تغييرات الشجرة التي جلبها الدمج. تبقى إيداعات الفرع أسلافًا لـ main، لذلك لا يجلب git merge الثاني إلا الإيداعات التي أُنشئت بعد التراجع.
لإعادة العمل الأصلي، تراجع عن التراجع أولًا، ثم ادمج الفرع بعد إصلاحه:
git revert <revert-commit>
git merge feature/searchماذا لو لم أدفع الدمج بعد؟
يمكنك إسقاط الدمج بدلًا من إضافة تراجع. يسجل Git الإيداع السابق للدمج في ORIG_HEAD، ويرفض --merge المساس بتعديلات محلية غير مرتبطة قد تستبدلها إعادة الضبط:
git reset --merge ORIG_HEADوإن كان الدمج جاريًا وفيه تعارضات، فلا يوجد إيداع دمج بعد، فاستخدم git merge --abort. اقرأ طريقة التراجع عن reset وrebase وcommit إن تجاوزت الحد، ودرس revert مقابل reset في السجل المشترك لفهم القاعدة وراء هذا الاختيار.
طريقة التراجع عن إيداع دمج في GitTree
افتح قائمة الإيداع
ابحث عن الدمج في رسم الإيداعات وانقر عليه بزر الفأرة الأيمن.
اختر Revert Commit
لأن للدمج أصلين، يسألك GitTree عن الأصل الذي يقيس عليه: First parent (the branch merged into) هو الاختيار المعتاد، وSecond parent (the branch merged in) هو الآخر.
تحقق من النتيجة
يعرض GitTree Reverted. ويصبح الإيداع الجديد أعلى صف في فرعك. إذا ظهر تعارض، فأصلح الملفات واضغط Continue، أو Abort… للعودة.
راجع cherry-pick وrevert في GitTree للدليل الكامل، بما في ذلك عدة إيداعات دفعة واحدة.

الأسئلة الشائعة
هل يحذف git revert إيداع الدمج؟
لا. يبقى الدمج في السجل، ويضيف Git إيداعًا جديدًا يلغي تغييراته، ولهذا فهو آمن في الفرع المشترك.
ماذا يعني -m 1 في git revert؟
يحدد الأصل الرئيسي الذي تبقيه. الأصل 1 هو الفرع الذي كنت عليه عند تنفيذ الدمج، لذلك يزيل -m 1 ما جلبه الفرع الآخر.
هل يمكنني التراجع عن دمج تم دفعه؟
نعم، وهذه هي الأداة الصحيحة لذلك. يضيف التراجع إيداعًا، فتدفع بشكل عادي ولا يحتاج أحد إلى إعادة كتابة شيء.
لماذا لم يُعد الدمج الثاني شيئًا؟
إيداعات الفرع الذي تراجعت عنه موجودة في السجل، فيعدّها Git مدموجة. تراجع عن إيداع التراجع، ثم ادمج مرة أخرى.
كيف ألغي دمجًا ما زال جاريًا؟
نفّذ git merge --abort. يوقف الدمج ويعيد الملفات إلى ما كانت عليه قبل أن تبدأه.
المصادر
تحققنا من المعلومات عن المنتجات الأخرى من صفحاتها الرسمية بتاريخ 7 نوفمبر 2026. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.