الدمج ثلاثي الاتجاهات (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 دمج التغييرات من كلا الفرعين تلقائيًا، طالما أنها تمس أجزاءً مختلفة من الملفات. تحدث التعارضات فقط عندما يقوم كلا الفرعين بتغيير نفس الأسطر، وهو موضوع الدرس القادم.
التحدي
متوسطتبدأ في مجلد جديد يحتوي على top.txt (المحتوى: a) و bottom.txt (المحتوى: b).
قم بتهيئة المستودع، وقم بإجراء أول commit، ثم:
- تفرع إلى
featureوأضف السطرaddedإلىtop.txt؛ ثم قم بعمل commit. - انتقل إلى
mainوأضف السطرaddedإلىbottom.txt؛ ثم قم بعمل commit. - ادمج
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 بالدمج تلقائيًا طالما أن كلا الفرعين قاما بتغيير أسطر مختلفة.
جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التحكم في الإصدارات
7التفرع (Branching)
ما هو الفرع (Branch)؟إنشاء فرعالتبديل بين الفروعإجراء Commit على فرعحذف فرعملخص - ممارسة التفرع10المستودعات البعيدة (Remotes)
ما هو الـ Remote؟إضافة Remoteعمليات Push و Pull و Cloneملخص - إعداد الـ Remote8الدمج
ما هو الدمجدمج التقديم السريع (Fast-Forward)الدمج ثلاثي الاتجاهات (Three-Way)تعارضات الدمجحل التعارضملخص - محترف الدمج11مشروع Feature Branch
نظرة عامة على المشروعتهيئة Main