العمل العملي رقم 1: الفرق بين git merge و git rebase

3 دقيقة

الأهداف التربوية:

  • فهم الفروقات الأساسية بين git merge و git rebase.
  • ملاحظة أثر الأمرين على سجل Git.
  • توثيق العمليات بلقطات شاشة وشروح واضحة.

أهداف العمل العملي

في نهاية هذا العمل، ستكون قادراً على:

  1. استخدام git merge و git rebase لدمج تعديلات الفروع.
  2. تحليل الفروقات بين الأمرين في بنية السجل.
  3. تحديد حالات الاستخدام المثالية لـ merge و rebase.

التعليمات والخطوات المفصّلة

التحضير

  1. أنشئ مجلد عمل لهذا التمرين:

    • في طرفيتك، اكتب الأوامر التالية لإعداد بيئتك:
      bash
      mkdir git-evaluation-1
      cd git-evaluation-1
      git init
  2. لقطة شاشة: التقط لقطة تُظهر تهيئة المستودع (git init).


الخطوة 1: تهيئة المستودع وإنشاء الفرع الرئيسي

  1. إنشاء الملف الأولي أنشئ ملفاً اسمه fichier1.txt (الملف الأصلي) وأضف إيداع أساس على الفرع الرئيسي main:

    bash
    echo "Contenu initial dans fichier1" > fichier1.txt
    git add fichier1.txt
    git commit -m "Initialisation du projet avec fichier1.txt"
  2. أعد تسمية الفرع الرئيسي إلى main (إن لزم):

    bash
    git branch -M main
  3. لقطة شاشة: أظهر إضافة الملف وأول إيداع.


الخطوة 2: إنشاء الفروع لإعادة الأساس والدمج

  1. أنشئ الفرعين branche1 و branche2 انطلاقاً من main:

    • أنشئ branche1:
      bash
      git checkout -b branche1
    • عُد إلى main وأنشئ branche2:
      bash
      git checkout main
      git checkout -b branche2
  2. إنشاء فروع العمل:

    • أنشئ branche-rebase من branche1:
      bash
      git checkout branche1
      git checkout -b branche-rebase
    • أنشئ branche-merge من branche2:
      bash
      git checkout branche2
      git checkout -b branche-merge
  3. لقطة شاشة: أظهر إنشاء الفروع بالأمر git branch.


الخطوة 3: إضافة إيداعات متطابقة على branche-rebase و branche-merge

ملاحظة: سنستخدم ملفات مختلفة (fichier-2-rebase.txt و fichier-2-merge.txt) ونجري التعديلات نفسها لمقارنة آثار merge و rebase.

  1. العمل على branche-rebase:

    • الإيداع الأول:

      bash
      git checkout branche-rebase
      echo "Modification 1 dans branche-rebase" > fichier-2-rebase.txt
      git add fichier-2-rebase.txt
      git commit -m "Ajout de fichier-2-rebase.txt avec modification 1"
    • الإيداع الثاني:

      bash
      echo "Modification 2 dans branche-rebase" >> fichier-2-rebase.txt
      git add fichier-2-rebase.txt
      git commit -m "Ajout de modification 2 dans fichier-2-rebase.txt"
    • الإيداع الثالث:

      bash
      echo "Modification 3 dans branche-rebase" >> fichier-2-rebase.txt
      git add fichier-2-rebase.txt
      git commit -m "Ajout de modification 3 dans fichier-2-rebase.txt"
  2. العمل على branche-merge:

    • الإيداع الأول:

      bash
      git checkout branche-merge
      echo "Modification 1 dans branche-merge" > fichier-2-merge.txt
      git add fichier-2-merge.txt
      git commit -m "Ajout de fichier-2-merge.txt avec modification 1"
    • الإيداع الثاني:

      bash
      echo "Modification 2 dans branche-merge" >> fichier-2-merge.txt
      git add fichier-2-merge.txt
      git commit -m "Ajout de modification 2 dans fichier-2-merge.txt"
    • الإيداع الثالث:

      bash
      echo "Modification 3 dans branche-merge" >> fichier-2-merge.txt
      git add fichier-2-merge.txt
      git commit -m "Ajout de modification 3 dans fichier-2-merge.txt"
  3. لقطة شاشة: أظهر الإيداعات المنجزة في كل فرع بـ git log.


الخطوة 4: دمج الفروع بـ merge و rebase

  1. إعادة أساس branche-rebase في branche1:

    • انتقل إلى branche1:

      bash
      git checkout branche1
    • أعد أساس branche-rebase في branche1:

      bash
      git rebase branche-rebase
    • لقطة شاشة: استخدم git log --oneline --graph --all لإظهار السجل الخطّي الذي أنشأته إعادة الأساس.

  2. دمج branche-merge في branche2:

    • انتقل إلى branche2:

      bash
      git checkout branche2
    • ادمج branche-merge في branche2:

      bash
      git merge branche-merge -m "Fusion de branche-merge dans branche2"
    • لقطة شاشة: استخدم git log --oneline --graph --all لإظهار السجل مع إيداع الدمج.


الخطوة 5: المقارنة النهائية وأسئلة التفكير

أسئلة التفكير

  1. مقارنة السجلات:

    • ماذا تلاحظ في الفرق بين سجل branche1 (مع rebase) وسجل branche2 (مع merge
    • التقط لقطة لكل سجل واشرح الفروقات المرصودة.
  2. حجج لكل طريقة:

    • في أي حالات يُفضَّل استخدام rebase لدمج التعديلات؟
    • في أي حالات يكون merge أكثر فائدة؟
  3. سيناريوهات تطبيق:

    • تخيّل مشروعاً ضمن فريق. اشرح حالة ملموسة قد يسبّب فيها merge تعارضات في السجل، وكيف يمكن لـ rebase حل هذه المشكلة.
    • وبالعكس، صف حالة قد يسبّب فيها الإفراط في استخدام rebase صعوبات تتبّع في مشروع تعاوني.

الملخص والتسليم

لتسليم هذا العمل العملي:

  1. اجمع إجاباتك ولقطات الشاشة في مستند (PDF أو Word).
  2. أجب عن أسئلة التفكير في أسفل المستند.
  3. سلّم ملفك على منصة الدورة.