Git وGitHub / الأساسي: نموذج Git المحلي / الدرس 5
الدمج والنسب ونتائج التكامل
اختر التكامل بحسب الرسم وتحقق من المحتوى الناتج بدلاً من رسالة النجاح وحدها.
في هذه الصفحة
أهداف الدرس
- ميّز التقدم السريع من إيداع الدمج.
- تحقق من السلوك المدمج واحفظ معنى الآباء.
اسأل هل يحتوي رأس الآخر
يبدأ التكامل بالنسب. إذا كان رأس الجاري سلفاً لرأس الموضوع يتقدم المرجع إليه مباشرة. وإذا أضاف الطرفان بعد قاعدة مشتركة فقد يلزم إيداع دمج أو نهج آخر. لا يعني تساوي الملفات تساوي النسب ولا يثبت الدمج النظيف التوافق الدلالي. افحص الرسم والوجهة واحمِ المحلي. يعمل الأمر على الجاري، فيغير عكس التبديل الخط المتلقي.
اشترط التقدم السريع عندما يكون السياسة
يقدم git merge --ff-only الفرع عندما لا يلزم إيداع دمج ويرفض غير ذلك. يفيد حين يتوقع المسار تحديثاً خطياً وقراراً للتشعب. لم يتقدم main في المختبر منذ التفريع فينتقل للرأس دون تكرار الإيداعات. عند التشعب افحص ولا تستبدل الخيار بقسر لإنجاح المثال.
git switch main
git merge --ff-only feature/title
git merge-base --is-ancestor feature/title main
يتطلب مختبراً نظيفاً فيه main سلف للفرع. يخرج فحص النسب بـ 0 بلا نص، أي وصول main لرأس الموضوع. هو تحقق حالة خروج لا فشل لفراغ المخرج.
افهم ما يسجله إيداع الدمج
يجمع الدمج الحقيقي التغييرات نسبة للأصل ويسجل آباء. بالأبويْن المعتادين يكون الأول رأس الوجهة السابق والثاني المدمج. قد تحوي الشجرة حلول تعارض ومحتوى آخر فتفوت مقارنة أب واحد السياق. قد يفضل المشروع إيداع دمج للبنية أو squash للتجميع أو إعادة أساس للعرض الخطي. تؤثر الخيارات في التاريخ والمراجعة؛ اتفق قبل كتابة المشترك أو تكامله.
افحص نتيجة دمج صريح
يفترض الجزء تشعب lab-left وlab-right من قاعدة وتعديل ملفين مستقلين. ينشئ الدمج على lab-left إيداع دمج ويفحص عدد الآباء دون توقع معرّفات. غياب التعارض يعني جمع النص آلياً لا اختبار البرنامج. نفذ الاختبارات وافحص النتيجة وفق المسار. اجعل التكامل مفهوماً ليشرح تاريخ الأب الأول دخول الميزة.
git switch lab-left
git -c user.name="Lab Author" -c user.email="lab@example.invalid" merge --no-edit lab-right
git rev-list --parents -n 1 HEAD | awk '{print NF-1}'
مع التشعب بلا تعارض يطبع الأخير 2. خط الصدفة للفحص في مختبر POSIX. شخّص فشل الدمج ولا تتابع كأن عدد الآباء مضمون بعد كل محاولة.
تحقق من التكامل لا العملية فقط
قد يعدل فرعان ملفين ويختلفان بواجهة أو مخطط أو وحدة أو افتراض. لا يكشف التعارض النصي كل المعنى. راجع الفرق المجموع والاختبارات والترحيل والتوافق. يدخل التعارض حالة قيد التنفيذ يجب إكمالها أو إلغاؤها بقصد. تسهل البداية النظيفة التعافي فقد تعقد التعديلات السابقة الاستعادة. احفظ المهم وتدرب بفرع مؤقت دون تغيير التاريخ المشترك.
الأخطاء الشائعة وإصلاحها
يرفض تكامل التقدم السريع فقط
- لماذا يحدث؟
- يحوي الرأسـان إيداعات مستقلة.
- كيف تصلحه؟
- افحص الرسم واختر الاستراتيجية المتفق عليها.
- كيف تتجنب تكراره؟
- عامل التشعب قراراً لا عائقاً للتجاوز.
يكسر دمج نظيف السلوك
- لماذا يحدث؟
- اجتمع النص وبقيت الافتراضات متعارضة.
- كيف تصلحه؟
- راجع واختبر السلوك المجموع.
- كيف تتجنب تكراره؟
- ضمّن فحوص تكامل المكونات.
يتلقى الفرع الخطأ الدمج
- لماذا يحدث؟
- لم تتحقق الوجهة الجارية.
- كيف تصلحه؟
- احفظ النتيجة وخطط التصحيح بحسب المشاركة.
- كيف تتجنب تكراره؟
- افحص الفرع والحالة قبل التكامل.
اختبر فهمك
1. main سلف لـ topic والسياسة تسمح التقدم. ما المتغير؟
اعرض الحل المشروح
ينتقل main للرأس وتتبع الشجرة. تحفظ الإيداعات هويتها ولا يلزم إيداع دمج. تحقق من النسب والمحتوى ولا تشترط إيداعاً جديداً.
2. يغير فرعان ملفين وأحدهما يعيد اسم دالة يستخدمها الآخر. ما الكاشف؟
اعرض الحل المشروح
تكشف المراجعة والاختبارات المجمعة الاستدعاء المكسور رغم نجاح النص. أضف اختبار عقد واجعل النتيجة قابلة للمراجعة.
أهم ما تعلمته
- يحدد النسب إمكان التقدم السريع.
- يحفظ آباء الدمج علاقات التكامل.
- يحتاج النجاح النصي تحققاً دلالياً.