0Pricing
Git & GitHub Professional Workflow · درس

حل تعارضات الدمج يدويًا

تعلّم تحديد تعارضات الدمج التي تنشأ عند دمج الفروع المتباعدة وحلها يدويًا

حل تعارضات الدمج يدويًا درس مجاني في Git & GitHub Professional Workflow على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Git & GitHub Professional Workflow، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Git & GitHub Professional Workflow 4 دروس في المجموع.

فهم تعارضات الدمج

مرحبًا بكم في عالم تعارضات الدمج! لا تقلقوا، فهي جزء طبيعي من التعاون باستخدام Git. يحدث تعارض الدمج عندما يعجز Git عن تحديد كيفية جمع التغييرات من فرعين مختلفين تلقائيًا.

يحدث هذا عادةً عندما يعدّل فرعان الأسطر نفسها في الملف نفسه بطرائق مختلفة، أو عندما يحذف أحد الفروع ملفًا عدّله فرع آخر.

سبب حدوث التعارضات

يتمتع Git بقدرة فائقة على دمج معظم التغييرات تلقائيًا. لكنه يحتاج إلى مساعدة بشرية عند مواجهة الغموض. إليكم بعض السيناريوهات الشائعة:

  • السطر نفسه، تغييرات مختلفة: يعدّل شخصان السطر نفسه من الشيفرة بطرائق مختلفة تمامًا.
  • حذف مقابل تعديل: يحذف أحد الفروع ملفًا، بينما يعدّله فرع آخر.
  • إعادة تسمية مقابل تعديل: يُعاد تسمية ملف في أحد الفروع، ويُعدّل في فرع آخر.

اكتشاف التعارضات باستخدام Git

عند حدوث تعارض دمج، لن يُكمل Git عملية الدمج تلقائيًا. بل سيوقف العملية ويخبركم بالملفات التي تحتوي على تعارضات. وستظهر لكم رسالة مثل هذه:

Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

استخدام `git status` للتعامل مع التعارضات

بعد فشل الدمج التلقائي، سيكون المستودع في حالة «دمج». يمكنكم استخدام git status لمعرفة الملفات التي تحتوي على تعارضات. وستُدرج هذه الملفات ضمن «المسارات غير المدمجة».

git status

فهم علامات التعارض

يُدرج Git علامات خاصة مباشرةً في الملفات المتعارضة ليوضح موضع المشكلة. وتساعدكم هذه العلامات على تحديد إصدارات الشيفرة المختلفة:

  • <<<<<<< HEAD: تحدد بداية تغييرات فرعكم الحالي.
  • =======: تفصل بين تغييرات الفرعين.
  • >>>>>>> branch-name: تحدد نهاية تغييرات الفرع الوارد.

داخل ملف متعارض

لنلقِ نظرة على مثال. تخيلوا أن لديكم ملفًا باسم hello.txt. غيّر فرع main محتواه إلى 'Hello from main'، بينما غيّر فرع feature السطر نفسه إلى 'Greetings from feature'. عند دمج feature في main، سيبدو الملف كما يلي:

<<<<<<< HEAD
Hello from main
=======
Greetings from feature
>>>>>>> feature

حل التعارض يدويًا

تتمثل مهمتكم في فتح الملف المتعارض (مثل hello.txt) باستخدام محرر النصوص. ثم تعدّلون الملف يدويًا لإزالة علامات التعارض واختيار المحتوى المطلوب. يمكنكم جمع الأجزاء، أو اختيار أحد الإصدارين، أو كتابة محتوى جديد تمامًا.

في مثال hello.txt، إذا أردنا الإبقاء على الرسالتين، فقد نعدّله ليصبح:

Hello from main and Greetings from feature!

تجهيز التغييرات التي حُلّت تعارضاتها

بعد تعديل الملف يدويًا وإزالة جميع علامات التعارض، يجب إخبار Git بأنكم حللتم التعارض. ويتم ذلك بتجهيز الملف باستخدام git add.

كرروا هذه العملية لكل ملف أدرجه git status ضمن «المسارات غير المدمجة».

git add hello.txt

إكمال commit الدمج

بعد تجهيز جميع الملفات المتعارضة، يصبح الدمج جاهزًا لتنفيذ commit. عادةً ما يوفر Git رسالة افتراضية لـcommit الدمج، ويمكنكم قبولها أو تعديلها. ويكمل هذا الـcommit النهائي عملية الدمج.

git commit -m "Merged feature branch, resolved conflict in hello.txt"

اختبار حل التعارض

لقد حللتم تعارض دمج بنجاح. والآن، لنختبر فهمكم للخطوة المهمة التالية بعد تعديل ملف متعارض يدويًا.

مراجعة: حل التعارضات يدويًا

لقد تعلمتم كيفية حل تعارضات الدمج يدويًا! وهذه مهارة أساسية لأي مطوّر.

  • تحدث التعارضات عندما يتعذر على Git دمج التغييرات تلقائيًا.
  • يعرض git status الملفات التي لم تُدمج.
  • تُظهر علامات التعارض (<<<<<<<، =======، >>>>>>>) الشيفرة المختلفة بين التغييرات.
  • حرّروا الملفات يدويًا، وأزيلوا العلامات، واختاروا المحتوى النهائي.
  • أضيفوا الملفات التي حُلّت تعارضاتها إلى منطقة التجهيز باستخدام git add.
  • أكملوا عملية الدمج باستخدام git commit.

الممارسة تؤدي إلى الإتقان! قد تبدو التعارضات مخيفة في البداية، لكنكم ستتقنون التعامل معها باتباع هذه الخطوات.

الأسئلة الشائعة

هل درس «حل تعارضات الدمج يدويًا» مجاني؟

نعم — نص درس «حل تعارضات الدمج يدويًا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Git & GitHub Professional Workflow، انتقل إلى CoddyKit PRO. تتضمن دورة Git & GitHub Professional Workflow 4 دروس في المجموع.

ماذا ستتعلم في «حل تعارضات الدمج يدويًا»؟

تعلّم تحديد تعارضات الدمج التي تنشأ عند دمج الفروع المتباعدة وحلها يدويًا تتمرن على Git & GitHub Professional Workflow مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Git & GitHub Professional Workflow؟

لا تُشترط خبرة سابقة. Git & GitHub Professional Workflow على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «حل تعارضات الدمج يدويًا»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Git & GitHub Professional Workflow هذا؟

نعم. كل درس في Git & GitHub Professional Workflow يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. حل تعارضات الدمج يدويًا
  2. إعادة الأساس التفاعلية للسجل
  3. انتقاء الالتزامات
  4. استخدام Git Rerere لإعادة استخدام حلول التعارضات
← العودة إلى Git & GitHub Professional Workflow