Git & GitHub • المستوى الثاني • الدرس 3
العودة لفهرس المستوىمعالجة تضارب الأكواد (Resolving Merge Conflicts)
أهداف الدرس
- فهم أسباب حدوث الـ Merge Conflict عند تعديل نفس السطر في فرعين مختلفين.
- قراءة علامات التضارب
<<<<<<<و=======و>>>>>>>. - تنفيذ سير عمل الحل:
git statusgit addgit commit. - التمييز بين نسخة
HEAD(الفرع الحالي) ونسخة الفرع المُدمج.
1. كيف يبدو التضارب داخل الملف؟
عندما يتعذر على Git اتخاذ القرار التلقائي، يضع علامات خاصة داخل الملف لتحديد الجزء المتضارب. عليك إزالة العلامات والاحتفاظ بالنص الصحيح يدوياً ثم إتمام الحل بـ Commit.
javascript
// ملف index.js بعد حدوث التضارب
<<<<<<< HEAD
const appTitle = "منصة نهضة التعليمية - النسخة المستقرة";
=======
const appTitle = "منصة نهضة التعليمية - النسخة المحدثة";
>>>>>>> feature/title-update
// بعد الحل اليدوي (احتفظ بالنسخة الصحيحة فقط)
const appTitle = "منصة نهضة التعليمية - النسخة المحدثة";2. شرح علامات التضارب
<<<<<<< HEAD
بداية الجزء المتضارب. ما يلي هو التعديل الموجود في الفرع الحالي.
=======
الفاصل بين النسختين. ما قبله = نسخة HEAD، وما بعده = نسخة الفرع الآخر.
>>>>>>> branch
نهاية التضارب. اسم الفرع بعد العلامة هو مصدر الجزء الثاني.
3. سير عمل حل التضارب
1. git status
يعرض الملفات المتضاربة تحت قسم Unmerged paths. استخدمه لتحديد الملفات التي تحتاج حلاً.
2. git add <file>
بعد حل التضارب يدوياً في الملف، أخبر Git أنك انتهيت بإضافته للمنطقة المُجهزة.
3. git commit
إتمام عملية الدمج. رسالة مثل fix: resolve merge conflict موصى بها.
git merge --abort
خيار احتياطي لإلغاء الدمج والعودة للحالة قبل المحاولة (عند التعقيد).
التطبيق العملي المباشر
تحدي الدرس الثالث: إتمام حل التضارب خطوة بخطوة
قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:
- هيّئ السيناريو:
git init+ أول التزام + فرعfeature/title-updateمع التزام + العودة إلىmainمع التزام متعارض. - نفّذ محاولة الدمج
git merge feature/title-update(لتفعيل السيناريو). - افحص الحالة بـ
git statusلرؤية الملفات المُدمجة. - بعد الحل اليدوي (خارج المحاكي)، أضف الملف المحلول:
git add index.js. - أكمل الحل بـ
git commit -m "fix: resolve merge conflict in app title". - تحقق من السجل النهائي بـ
git log --oneline.
⏳ جارٍ تحميل المحرر التفاعلي...