حل تعارضات الدمج
هذا هو الدرس الأخير في الدورة، وهي اللحظة المناسبة لطمأنتك مرة واحدة وإلى الأبد: تعارض الدمج ليس خطأ وليس فشلاً — إنه جزء طبيعي تماماً من العمل الجماعي. في معظم الوقت يدمج Git التغييرات غير المتداخلة بنفسه، بهدوء، دون أن يسألك أي شيء. وهو يطلب قرارك في حالة واحدة ضيقة فقط: عندما يغيّر فرعان نفس الأس
تعارض الدمج يشبه شخصين يكتبان بالقلم الرصاص على نفس السطر في صفحة واحدة. يحاول Git أن يجمع الجميع، لكن على السطر المتداخل لا يجرؤ على التخمين — فيضع النسختين واحدة فوق الأخرى ويطلب منك أن تختار أيّهما تبقى. في اللحظة التي تختار فيها وتحذف العلامات — ينتهي النزاع.
- تعارض الدمج (merge conflict)
- عندما يغيّر فرعان نفس الأسطر في نفس الملف، فلا يستطيع Git الدمج تلقائياً. فيعلّم كلتا النسختين ويطلب منك أن تختار. هذا أمر طبيعي وليس خطأ.
- علامات التعارض (conflict markers)
- الأسطر التي يكتبها Git داخل الملف: <<<<<<< لبداية جانبك (HEAD)، و======= كفاصل، و>>>>>>> لبداية الجانب الآخر. يجب حذف الثلاثة جميعاً في النهاية.
- HEAD (جانبك)
- في التعارض، الكتلة الواقعة بين <<<<<<< HEAD و======= هي نسخة الفرع الذي أنت عليه الآن — 'جانبي'.
- الدمج التلقائي (auto-merge)
- عندما لا تمسّ تغييرات الفرعين نفس الأسطر، يدمجها Git بنفسه دون سؤال. معظم عمليات الدمج تمرّ بهذه الطريقة بهدوء، دون أي تعارض على الإطلاق.
- الحل (resolve)
- العملية: افتح الملف، اختر ما يبقى (جانب واحد، أو الآخر، أو مزيج بينهما)، احذف جميع العلامات، ثم git add <file> و git commit لإنهاء الدمج.