البرمجة

الدليل الشامل لنظام Git

الدليل المرجعي للعمل على نظام غيت Git

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


مقدمة عن Git

تم تطوير Git في عام 2005 بواسطة لينوس تورفالدس، مبتكر نظام التشغيل لينكس، بهدف توفير نظام تحكم في النسخ يتميز بالسرعة والمرونة والكفاءة العالية. يعتمد Git على نظام توزيع نسخ المشاريع بشكل كامل بين جميع المشاركين، مما يعني أن كل نسخة محلية للمشروع تحتوي على كامل تاريخ التعديلات، وليس مجرد نسخة من الملفات الحالية. يتيح هذا النموذج توزيع العمل بفعالية عالية، حيث يمكن للمطورين العمل بدون اتصال مستمر بالإنترنت، ومن ثم دمج التعديلات لاحقًا.


المفاهيم الأساسية في Git

قبل التعمق في الأوامر العملية، من الضروري فهم المصطلحات والمفاهيم الأساسية التي تشكل جوهر عمل Git:

  • المستودع Repository: هو مكان تخزين الملفات والتاريخ الخاص بالمشروع. يمكن أن يكون المستودع محليًا على جهاز المستخدم أو على خادم بعيد مثل GitHub أو GitLab.

  • الفرع Branch: هو نسخة مستقلة من المشروع تستخدم لتطوير ميزات جديدة أو إصلاح الأخطاء دون التأثير على الفرع الرئيسي.

  • التزام Commit: يمثل نقطة تسجيل لحالة المشروع في وقت معين، يتضمن مجموعة من التغييرات مع رسالة وصفية.

  • مؤشر Staging Area: هو مساحة مؤقتة لتجميع الملفات المعدلة التي سيتم تضمينها في الالتزام القادم.

  • الدمج Merge: عملية دمج تغييرات فرع ما إلى فرع آخر.

  • التراجع Revert: عملية إلغاء أو التراجع عن تغييرات معينة أو التزامات سابقة.


الإعدادات الأولية لنظام Git

عند بداية استخدام Git على جهاز جديد، من المهم إعداد المعلومات الأساسية التي تستخدم في تحديد هوية المستخدم عند إنشاء الالتزامات.

bash
git config --global user.name "اسم المستخدم" git config --global user.email "البريد الإلكتروني"

يمكن الاطلاع على الإعدادات الحالية بواسطة:

bash
git config --list

كما يمكن تعديل الإعدادات على مستوى المشروع فقط (بدون --global) لتخصيص الهوية بشكل مستقل عن باقي المشاريع.


إنشاء مستودع جديد

لبدء مشروع جديد باستخدام Git، يمكن إنشاء مستودع جديد في مجلد العمل عبر الأمر:

bash
git init

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


استنساخ مستودع موجود

في حالة العمل على مشروع قائم مخزن على خادم بعيد، يتم استنساخ المستودع إلى الجهاز المحلي باستخدام:

bash
git clone <عنوان-المستودع>

يؤدي هذا الأمر إلى تحميل نسخة كاملة من المستودع مع كل التاريخ الخاص به.


إضافة التغييرات وتجهيزها للالتزام

عند تعديل الملفات داخل المستودع، يجب تحديد الملفات التي سيتم تضمينها في الالتزام القادم من خلال “المرحلة” (Staging Area):

bash
git add <اسم-الملف>

لإضافة جميع الملفات المعدلة:

bash
git add .

تقوم هذه العملية بنقل حالة الملفات المعدلة إلى المرحلة المؤقتة، والتي ستستخدم عند تنفيذ الأمر commit.


تنفيذ الالتزام Commit

لتسجيل مجموعة من التغييرات في المستودع مع رسالة توضح طبيعة التغييرات، يتم تنفيذ الأمر:

bash
git commit -m "رسالة الالتزام"

يجب أن تكون رسالة الالتزام واضحة ومحددة لتعكس محتوى التغيير بدقة.


التحقق من حالة المستودع

لمعرفة حالة الملفات والتغييرات، يُستخدم الأمر:

bash
git status

يعرض هذا الأمر الملفات المعدلة والتي لم تُضاف بعد للمرحلة، وأيضًا الملفات غير المضافة للمستودع (Untracked).


عرض سجل الالتزامات

لمراجعة تاريخ الالتزامات، يمكن استخدام الأمر:

bash
git log

يعرض هذا السجل معلومات مفصلة عن كل التزامات مثل معرف الالتزام (hash)، الكاتب، التاريخ، والرسالة.

يمكن تخصيص العرض لتبسيط السجل، مثلاً عرض كل التزامات في سطر واحد:

bash
git log --oneline

العمل على الفروع Branches

الفروع من أهم مزايا Git التي تسمح بتطوير ميزات أو إصلاحات بشكل مستقل، دون التأثير على الخط الرئيسي للتطوير (عادةً الفرع الرئيسي اسمه main أو master).

إنشاء فرع جديد:

bash
git branch <اسم-الفرع>

التبديل إلى فرع معين:

bash
git checkout <اسم-الفرع>

إنشاء فرع جديد والانتقال إليه مباشرة:

bash
git checkout -b <اسم-الفرع>

دمج الفروع Merge

بعد الانتهاء من تطوير ميزة في فرع منفصل، يمكن دمج التغييرات إلى الفرع الرئيسي باستخدام:

bash
git checkout main git merge <اسم-الفرع>

في حالة وجود تعارضات (Conflicts) بين التغييرات، يتطلب الأمر حلها يدويًا قبل إتمام الدمج.


التعامل مع التعارضات

عندما يقوم Git بالكشف عن تعارضات في ملفات معينة أثناء الدمج أو إعادة التأسيس (rebase)، يتم تمييز المناطق المتضاربة داخل الملفات. يجب على المستخدم مراجعة هذه المناطق، تعديلها بما يتناسب، ثم إضافة الملفات المعدلة إلى المرحلة، ومن ثم استكمال العملية.


حذف الفروع

بعد الدمج والتأكد من عدم الحاجة إلى فرع معين، يمكن حذفه:

bash
git branch -d <اسم-الفرع>

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

bash
git branch -D <اسم-الفرع>

إعادة التعيين Reset

في حالات الحاجة لإلغاء التغييرات أو التراجع عن التزامات معينة، يستخدم الأمر reset مع عدة خيارات:

  • لإرجاع المرحلة إلى حالة الالتزام الأخير مع الإبقاء على التغييرات في ملفات العمل:

bash
git reset --soft HEAD~1
  • لإلغاء الالتزام الأخير مع إزالة التغييرات من المرحلة ولكن إبقائها في ملفات العمل:

bash
git reset --mixed HEAD~1
  • لإلغاء الالتزام الأخير مع حذف التغييرات تمامًا:

bash
git reset --hard HEAD~1

سحب التحديثات من المستودع البعيد

لجلب التحديثات من المستودع البعيد ودمجها مع الفرع المحلي:

bash
git pull

يقوم هذا الأمر بسحب التغييرات ودمجها تلقائيًا.


دفع التغييرات إلى المستودع البعيد

بعد تنفيذ الالتزامات محليًا، يمكن رفعها إلى المستودع البعيد:

bash
git push origin <اسم-الفرع>

إنشاء وسحب علامات Tags

العلامات تستخدم لوضع نقاط مرجعية ثابتة في تاريخ المشروع، مثل إصدارات معينة.

إنشاء علامة جديدة:

bash
git tag <اسم-العلامة>

رفع العلامات إلى المستودع البعيد:

bash
git push origin <اسم-العلامة>

استعراض الفرق Diff

لمقارنة التغييرات بين نقطتين زمنيتين أو بين الملفات في مراحل مختلفة:

  • بين الملفات المعدلة وغير المضافة:

bash
git diff
  • بين المرحلة والالتزام الأخير:

bash
git diff --staged

التعامل مع المستودعات البعيدة Remote Repositories

تتيح Git ربط المستودع المحلي بمستودعات على الإنترنت أو خوادم خاصة.

عرض المستودعات البعيدة المرتبطة:

bash
git remote -v

إضافة مستودع بعيد جديد:

bash
git remote add <اسم-الريموت> <عنوان-المستودع>

التحقق من إعدادات Git

يمكن عرض كافة الإعدادات الحالية التي تؤثر على عمل Git باستخدام:

bash
git config --list

ولضبط إعدادات معينة:

bash
git config --global <اسم-الإعداد> <القيمة>

أهم الأوامر مع وصف مختصر

الأمر الوصف
git init إنشاء مستودع Git جديد في المجلد الحالي
git clone استنساخ مستودع بعيد إلى الجهاز المحلي
git add إضافة ملفات إلى المرحلة المؤقتة
git commit -m تسجيل التغييرات في المستودع مع رسالة التزام
git status عرض حالة الملفات والتغييرات
git log عرض سجل الالتزامات
git branch إنشاء أو عرض الفروع
git checkout التبديل بين الفروع أو استرجاع الملفات
git merge دمج فرع معين في الفرع الحالي
git pull جلب التحديثات من المستودع البعيد ودمجها
git push رفع الالتزامات إلى المستودع البعيد
git reset التراجع عن التزامات أو إعادة تعيين الحالة
git diff عرض الاختلافات بين الملفات أو الالتزامات
git remote إدارة المستودعات البعيدة
git tag إنشاء وإدارة العلامات المرجعية

نصائح مهمة عند استخدام Git

  • كتابة رسائل الالتزام بوضوح ودقة تعبر عن التغييرات لتسهيل مراجعة التاريخ.

  • العمل على فروع منفصلة لتطوير الميزات أو إصلاح الأخطاء قبل دمجها في الفرع الرئيسي.

  • التحقق من التغييرات قبل الالتزام باستخدام git status وgit diff.

  • حل التعارضات بعناية وعدم الاستعجال في قبول التغييرات عند الدمج.

  • استخدام .gitignore لتحديد الملفات التي لا يجب تتبعها مثل ملفات الإعدادات الشخصية أو ملفات البناء المؤقتة.


ملف .gitignore

ملف .gitignore يُستخدم لتحديد الملفات والمجلدات التي لا يرغب المستخدم في تتبعها بواسطة Git. يساعد هذا في إبقاء المستودع نظيفًا وخاليًا من الملفات غير المهمة أو المؤقتة.

مثال على محتوى ملف .gitignore:

bash
# تجاهل ملفات النظام .DS_Store # تجاهل ملفات بناء البرمجيات /build /dist # تجاهل ملفات التكوين المحلية .env

الخلاصة

يُعد Git نظامًا متكاملاً لإدارة وتتبع التعديلات في المشاريع البرمجية بفعالية عالية، مما يدعم التعاون بين فرق العمل ويوفر آلية آمنة لتطوير المشاريع بشكل منظم. يمتلك Git مجموعة واسعة من الأوامر والأدوات التي تغطي جميع مراحل التطوير من إنشاء المستودعات، العمل على الفروع، تنفيذ الالتزامات، إلى دمج التغييرات والتعامل مع المستودعات البعيدة. فهم هذه الأوامر واستخدامها بشكل صحيح يسهم بشكل كبير في رفع جودة وكفاءة عملية التطوير البرمجي.


المراجع

  • Pro Git (Scott Chacon and Ben Straub) – كتاب شامل ومجاني يشرح Git بالتفصيل.

  • الموقع الرسمي لنظام Git: https://git-scm.com

هذا الدليل المرجعي مصمم ليكون مصدرًا متكاملاً لكل من يريد العمل على نظام Git بمهارة واحترافية.