Git: إجهاض دمج
آخر تحديث
إذا واجه git merge تعارضات وفضّلت التراجع بدلاً من حلّها، فإن git merge --abort يلغي الدمج ويعيد فرعك تمامًا إلى الحالة التي كان عليها قبل أن تبدأ. إنه مخرج الطوارئ النظيف من دمج ساء مساره.
أما الدمج الذي اكتمل بالفعل فتتراجع عنه بطريقة مختلفة - انظر أدناه. جرّب هذه الأوامر في ساحة الطرفية (terminal playground) - صدفة حقيقية داخل متصفحك.
الصيغة
| Command | What it does |
|---|---|
git merge --abort | يلغي دمجًا به تعارضات ويعيد الحالة السابقة للدمج |
git reset --merge | مكافئ أقدم - يجهض الدمج ويعيد ضبطه |
git merge --quit | يخرج من الدمج لكنه يبقي شجرة العمل كما هي |
التراجع عن دمج اكتمل بالفعل
يختلف عن الإجهاض - كوميت الدمج موجود بالفعل.
| Situation | Command |
|---|---|
| الدمج محلي، ولم يُدفع | git reset --hard ORIG_HEAD |
| الدمج قد دُفع بالفعل | git revert -m 1 <merge-hash> |
أسئلة شائعة حول إجهاض الدمج في Git
كيف ألغي دمجًا قيد التنفيذ؟
شغّل
git merge --abort. إذا توقف الدمج بسبب تعارضات ولم ترغب في حلها، فإن هذا يلغي العملية بأكملها ويعيد فرعك وشجرة العمل إلى الحالة نفسها التي كانا عليها قبل أن يبدأ الدمج.ما الفرق بين git merge --abort و git reset --merge؟
كلاهما يؤدي المهمة نفسها في جوهرها - إلغاء دمج قيد التنفيذ واستعادة الحالة السابقة للدمج. إن
git merge --abort هو الأمر الحديث المصمم خصيصًا لهذا الغرض؛ أما git reset --merge فهو الطريقة الأقدم التي لا تزال تعمل. فضّل git merge --abort من أجل الوضوح.كيف أتراجع عن دمج اكتمل بالفعل؟
هذا ليس إجهاضًا، لأن كوميت الدمج موجود بالفعل. إذا كان الدمج محليًا فقط، فإن
git reset --hard ORIG_HEAD يعيد الفرع إلى موضعه قبل الدمج - وهو يعمل أيضًا بعد fast-forward حيث لا يصلح HEAD~1. لكنه يتجاهل العمل غير المودَع، لذا تحقق من git status أولًا. أما إذا كنت قد دفعت الدمج بالفعل، فاستخدم git revert -m 1 <merge-hash> لعكسه دون إعادة كتابة التاريخ المشترك.هل سيؤدي إجهاض الدمج إلى فقدان تغييراتي الأخرى؟
يعيد
git merge --abort الحالة التي كانت قبل الدمج مباشرة، لذا تُلغى تغييرات الدمج، لكن عملك الذي أودعته (committed) يبقى سليمًا. إذا كانت لديك تغييرات غير مودعة قبل بدء الدمج، فأودعها أو خبّئها باستخدام stash أولاً - فالإجهاض يعيد حالة الكوميت السابقة للدمج.هل يمكنني التدرّب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية (terminal playground) لتشغيل
git merge --abort في صدفة حقيقية داخل متصفحك - لا شيء لتثبيته. كما يغطي دورة Git التفاعلية المجانية من Coddy الدمج وحل التعارضات خطوة بخطوة.