Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الدمج ثلاثي الاتجاهات (Three-Way)

جزء من قسم التحكم في الإصدارات في رحلة Terminal على Coddy — الدرس 36 من 58.

إذا تحرك كلا الفرعين بشكل مستقل، فلن يتمكن Git من إجراء عملية fast-forward ببساطة. بدلاً من ذلك، يقوم بإجراء دمج ثلاثي (three-way merge): حيث ينظر إلى السلف المشترك ونهايتي الفرعين، ويُنشئ commit جديداً يجمعهما معاً.

هذا الالتزام الجديد هو التزام الدمج (merge commit). لديه أصلان، واحد من كل فرع:

git switch main
git merge feature -m "Merge feature"

يوفر الخيار -m رسالة دمج الالتزام (merge commit) مباشرة، وبذلك لا يفتح Git محرر نصوص.

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

challenge icon

التحدي

متوسط

تبدأ في مجلد جديد يحتوي على top.txt (المحتوى: a) و bottom.txt (المحتوى: b).

قم بتهيئة المستودع، وقم بإجراء أول commit، ثم:

  1. تفرع إلى feature وأضف السطر added إلى top.txt؛ ثم قم بعمل commit.
  2. انتقل إلى main وأضف السطر added إلى bottom.txt؛ ثم قم بعمل commit.
  3. ادمج feature في main مع الرسالة Merge feature.

اطبع عدد الـ commits التي يمكن الوصول إليها من HEAD باستخدام git rev-list --count HEAD. العدد المتوقع هو 4 (initial + feature + main + merge).

ورقة مرجعية

عندما يتشعب كلا الفرعين، يقوم Git بإجراء دمج ثلاثي (three-way merge)، مما يؤدي إلى إنشاء التزام دمج (merge commit) جديد بوالدين اثنين:

git switch main
git merge feature -m "Merge feature"

تحدد العلامة -m رسالة التزام الدمج دون فتح محرر. يقوم Git بالدمج تلقائيًا طالما أن كلا الفرعين قاما بتغيير أسطر مختلفة.

جرّب بنفسك

الطرفية
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس التحكم في الإصدارات