الدمج في جيت بسيط: دمج الفروع كمحترف

دمج الفروع في Git قد يكون أحيانًا مهمة مرهقة، ولكن أمر الـ git merge يبسط العملية بشكل كبير. في هذا البرنامج التعليمي، ستتعلم أساسيات دمج الفروع باستخدام git merge، مقترنًا بـ GitHub، أداة إدارة المشاريع الرائدة.

لنبدأ هذه الرحلة إلى عالم Git وGitHub، مركزين على أمر git merge القوي.

المتطلبات الأساسية لإتقان دمج Git

قبل الانغماس في تفاصيل git merge، تأكد من توفر الإعدادات التالية:

  • Git (الإصدار 2.25.1 المستخدم في هذا البرنامج التعليمي) – قم بتنزيله من موقع Git الرسمي.
  • A GitHub account – Sign up at GitHub.
  • جهاز Ubuntu (تم استخدام Ubuntu 20.04 هنا، ولكن أي نظام تشغيل يحتوي على Git سيكون كافيًا).

تهيئة مشروع لدمج Git

لاستخدام git merge بشكل فعال، تحتاج أولاً إلى مشروع Git. دعونا نقوم بإعداد مشروع تجريبي للممارسة.

1. ابدأ بإنشاء دليل جديد باسم ~/git-demo وانتقل إليه:

mkdir git-demo && cd git-demo

2. قم بإنشاء ملف index.html في الدليل ~/git-demo بالمحتوى التالي. يعرض هذا الملف الـ HTML الأساسي رسالة حول البدء مع git merge.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Demo</title>
</head>
<body>
    <h4>Let's get started with git merge</h4>
</body>
</html>

3. قم بتهيئة مستودع Git جديد في دليل المشروع الخاص بك:

تُستخدم أمر git init لتحويل مشروع قائم غير مُتخذ إلى مستودع Git أو لبدء مشروع جديد باستخدام Git.

git init
Initializing a Git repository for git merge

4. قم بتأكيد إنشاء مجلد .git في دليل مشروعك. يتم من خلال هذا المجلد تتبع Git للتغييرات:

ls -la
Verifying the existence of the GIT repository in the directory.

5. قم بتنفيذ أمر git add لمرحلة تغييراتك في المشروع. عن طريق مرحلة ملف index.html، أنت تستعد للتأكيد التالي في سير العمل باستخدام Git.

git add index.html

6. استخدم git status للتحقق من أن ملفك مرحل بشكل صحيح. يقدم هذا الأمر لقطة للحالة الحالية لدليل العمل الخاص بك.

git status
Confirming the staging of changes for git merge.

7. فيما بعد، قم بتأكيد تغييراتك باستخدام git commit. يحفظ هذا الأمر تغييراتك المرحلة إلى المستودع المحلي، مما يشكل خطوة هامة في تاريخ الإصدارات الخاص بك.

git commit -m "initial commit"
Executing the initial commit in preparation for git merge.

قم بتعيين هويتك في Git باستخدام: git config --global user.email "[email protected]" و git config --global user.name "Your Name" إذا كنت تستخدم Git للمرة الأولى.

8. قم بمراجعة تاريخ التأكيدات الخاص بك باستخدام git log. يساعدك هذا الأمر في تتبع التغييرات وهو أمر حيوي عند التحضير لعملية git merge.

git log
Checking commit history before performing git merge.

9. قم بتأكيد وجود الفروع في مستودعك باستخدام git branch. هذه الخطوة مهمة قبل أداء عملية git merge.

ملاحظة: يُطلق على الفرع الافتراضي اسم ‘main’ في إصدارات Git الحديثة، محل ‘master’.

git branch
Listing all branches in preparation for git merge.

إنشاء فرع لعملية دمج Git

بعد إكمال إعداد Git الأولي وإجراء أول commit، حان الوقت لإنشاء فرع جديد. سيتم استخدام هذا الفرع لتوضيح عملية git merge بشكل فعّال.

1. قم بتحديث ملف index.html بمحتوى جديد لتوضيح التغييرات في فرعك. تتضمن هذه النسخة حقول إدخال المستخدم، استعدادًا لعرض git merge.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Demo</title>
</head>
<body>
    <h4>Enhancing Git Merge Skills</h4>
    <form action="">
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
    </form>
</body>
</html>

2. تحقق من حالة مستودعك باستخدام git status لعرض التغييرات في index.html. يجب أن يشير إلى أن الملف معدل وغير مُسرح، جاهز للخطوات التالية في عملية git merge.

Inspecting repository changes for git merge.

3. قم بإنشاء فرع جديد باسم “form” باستخدام git checkout -b form. هذا الأمر لا يقوم بإنشاء الفرع الجديد فحسب، بل يقوم أيضًا بتحويل فرع العمل الخاص بك إلى “form”، وهو أمر أساسي لتنفيذ git merge.

git checkout -b form
Creating a new branch for git merge.

4. قم بتأكيد إنشاء الفرع الجديد عن طريق تشغيل git branch. يجب أن ترى الآن كل من الفروع “form” و “master”، مع “form” كفرع نشط يُشار إليه برمز النجمة (*)

git branch
Confirming the active ‘form’ branch for git merge.

5. قم بمرحلة وتأكيد التغييرات على فرع form. يضمن هذا الإجراء أن يعكس فرع form التحديثات الأخيرة التي تم إجراؤها على ملف index.html، مما يُعد الخطوة الأولى لعملية git merge فعّالة.

## مرحلة تحديث الملف
git add index.html

## تأكيد التغييرات الجديدة
git commit -m "Added user input fields to form"
Committing updated index.html to the ‘form’ branch for git merge.

دمج الفروع المحلية مع Git Merge

الآن بعد أن لديك فروع متميزة في مستودع GitHub الخاص بك، الخطوة التالية هي دمجها. تركز هذه القسم على دمج الفروع محليًا باستخدام أمر git merge، وهو عملية أساسية في Git.

1. لبدء عملية الدمج، انتقل إلى فرع master الذي سيتلقى التحديثات من فرع form:

git checkout master

2. بمجرد التحول إلى فرع master، قم بتنفيذ git merge form لدمج التغييرات من فرع form في master. هذه خطوة مهمة في عملية git merge.

git merge form
Successfully merging branches using git merge.

3. قم بتأكيد الدمج عن طريق التأكد من أنك على فرع master والتحقق من أن محتوى index.html قد تم تحديثه.

# تأكيد الفرع الحالي
git branch
# التحقق من المحتوى المدمج
cat index.html
Reviewing index.html content post git merge.

تبسيط العمليات مع Git Squash

التبسيط في Git هو تقنية تُستخدم لتنظيف تاريخ الاقتراحات. عندما تكون لديك رسائل اقتراح متعددة لا تحتاج إلى كل منها بشكل فردي، يسمح لك التبسيط بدمج هذه الرسائل في اقتراح واحد شامل. هذه الممارسة مفيدة بشكل خاص عند التحضير لعملية git merge.

دعنا نستكشف عملية التبسيط من خلال إجراء مزيد من التغييرات على ملف index.html في فرع form، ثم دمج هذه التغييرات.

1. قم بالتبديل إلى فرع form لإجراء تعديلات إضافية:

git checkout form

2. قم بتعديل index.html عن طريق إضافة رأس نموذج. سيؤدي هذا الخطوة إلى إنشاء تغيير سنقوم بضغطه لاحقًا أثناء الدمج:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h4>Mastering Git Merge with Form Updates</h4>
    <form action="">
      <h4>Account Details</h4>
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
</body>
</html>

3. قم بمرحلة وتأكيد التغييرات برسالة واضحة تصف التحديث:

git add index.html
git commit -m "Enhanced form with a header for git merge"
Staging and committing changes for squashing in git merge.

4. قم بتعزيز index.html في فرع form عن طريق إضافة حقل إدخال جديد. هذا التعديل جزء من التحضير لعملية git merge الفعالة.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Example</title>
</head>
<body>
    <h4>Practicing Git Merge</h4>
    <form action="">
      <h4>Enter account details</h4>
      <input type="text" name="fullname" placeholder="Full Name" />
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
</body>
</html>

5. قم بمرحلة وتأكيد هذه التغييرات برسالة مميزة، مضمنًا كل خطوة في عملك بوضوح لعملية git merge القادمة:

git add index.html
git commit -m "Enhanced form with an additional input field"
Adding another input field to index.html for git merge.

6. فيما بعد، قم بإدراج عنصر فقري تحت النموذج في index.html، معدّلا الملف بشكل إضافي استعدادًا لعملية git merge.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Practice</title>
</head>
<body>
    <h4>Let's get started with git merge</h4>
    <form action="">
      <h4>Enter account details</h4>
      <input type="text" name="fullname" placeholder="Full Name" />
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
    <p>Already a user?</p>
</body>
</html>

7. قم بمرحلة وتأكيد التغييرات مرة أخرى، باستخدام رسالة تلخص جوهر هذا التحديث، حيوية لعملية git merge:

git add index.html
git commit -m "Added user status paragraph to form"
Further modifying index.html for git merge.

8. استخدم git rebase في وضع تفاعلي لعرض وتحرير الالتزامات الأخيرة. هذه الخطوة ضرورية في عملية ضغط الالتزامات لجعل عملية git merge نظيفة ومنظمة.

git rebase -i HEAD~3

9. في وضع التفاعلي، اختر reword للالتزام الأول و squash للالتزامات التالية. يؤدي هذا الإجراء إلى ت consأل الالتزامات التاريخية، مما يجعل عملية git merge أكثر نظافة وتنظيمًا.

Preparing commits for squashing in git merge.

10. بعد إعادة الصياغة والحفظ، قم بتحديث رسالة الالتزام الموحدة لتعكس التغييرات التراكمية. تؤدي هذه الخطوة إلى إكمال عملية الضغط، مما يعدك لعملية git merge ميسرة.

Finalizing the commit message for git merge.

تأكيد نجاح عملية الضغط الخاصة بك، والتي تعتبر جزءًا أساسيًا من عملية الدمج في git merge عند التعامل مع رسائل الالتزام المتعددة.

Successful git squash operation.

للضغط والدمج المتزامن، استخدم git merge --squash. تقوم هذه التقنية بدمج وضغط فرع form في فرع master، مما يجمع بشكل فعال بين الالتزامات.

git merge --squash form

تنفيذ أمر git merge --squash يجمع بين التغييرات من فرع form في master مع ضغط جميع الالتزامات في واحدة. تعتبر هذه الطريقة جزءًا من استراتيجيات git merge الفعالة.

Executing git merge with squash option.

تنفيذ Fast-Forward في دمج Git

للحصول على تاريخ الالتزام الميسر، فإن التقدم السريع هو طريقة مثالية، خاصة للتحديثات الصغيرة أو إصلاحات الأخطاء. يتيح لك ذلك دمج الفروع دون إضافة المزيد من الالتزامات، مما يحافظ على تاريخ نظيف وخطي، الأمر الحاسم في عمليات git merge الفعّالة.

يحدث التقدم السريع عندما لا تكون هناك انحرافات في فرع القاعدة، وعادة ما يكون هذا الفرع هو master، مما يمكن من دمج تاريخين وتحديثات المؤشر بسلاسة.

1. قم بالتبديل إلى فرع form لبدء عملية التقدم السريع:

git checkout form

2. أنشئ وحدّث ملف JavaScript، مثل index.js، في فرع form، وقم بتجميع والتزام التغييرات:

git add index.js
git commit -m "Added JavaScript functionality"

3. وأخيرًا، قم بدمج فرع form في master باستخدام نهج التقدم السريع. يقوم هذا الخطوة بمحاذاة فرع master مع أحدث التغييرات من فرع form، مما يخلق مسارًا git merge سلسًا وخطيًا.

git checkout master
git merge form
Performing a fast-forward merge in Git.

الختام

هذا البرنامج التعليمي قد قادك خلال مختلف التقنيات لدمج الفروع باستخدام git merge. من سحق التعهيدات إلى التقدم السريع، تعزز هذه الطرق قدرتك على إدارة المشاريع بشكل تعاوني في Git.

الآن ومع مجموعة من هذه المهارات، افكر في المساهمة في مشاريع على GitHub، وتطبيق معرفتك في git merge في سيناريوهات العمل الحقيقية.

Source:
https://adamtheautomator.com/git-merge/