ما هو Git؟
(نظام التحكم بالإصدار):

1. ما هو Git؟ (نظام التحكم بالإصدار)

Git هو نظام تحكم في الإصدار الموزع (Distributed Version Control System - DVCS). ببساطة، هو أداة برمجية تعمل على جهاز الكمبيوتر الخاص بك لتتبع التغييرات التي تجريها على ملفات مشروعك عبر الزمن.

المشكلة التي يحلها Git:

قبل Git، كان المطورون يواجهون مشاكل مثل:

  • فقدان الكود القديم بعد تعديله.
  • صعوبة التعاون مع فريق (النسخ واللصق يدويًا).
  • عدم القدرة على معرفة من قام بتغيير معين ومتى.
  • استحالة العودة لنسخة سابقة إذا حدث خطأ.

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

المصطلح العربيالمصطلح الإنجليزيالشرح
المستودعRepository (Repo)المجلد الذي يحتوي على مشروعك وتاريخه الكامل
الالتزامCommitلقطة (Snapshot) محفوظة من حالة الملفات في لحظة زمنية معينة مع رسالة توضيحية
الفرعBranchخط زمني مستقل للتطوير (مثل فرع للميزات الجديدة وفرع للإصلاحات)
الدمجMergeدمج تغييرات فرع في فرع آخر (عادةً دمج الفروع الفرعية في الفرع الرئيسي)
المنطقة المؤقتةStaging Area (Index)منطقة وسيطة تضع فيها الملفات استعدادًا للالتزام بها
النقل (الدفع)Pushرفع التغييرات من جهازك المحلي إلى مستودع بعيد
السحبPullجلب التغييرات من مستودع بعيد إلى جهازك المحلي

أوامر Git الأساسية:

# تهيئة مستودع جديد في المجلد الحالي git init # إضافة ملف للمنطقة المؤقتة git add filename.txt # أو إضافة كل الملفات المعدلة git add . # حفظ التغييرات في الالتزام git commit -m "وصف مختصر للتغييرات" # ربط المستودع المحلي بمستودع بعيد (مثل GitHub) git remote add origin https://github.com/username/repo.git # رفع التغييرات للمستودع البعيد git push origin main # جلب آخر التحديثات من المستودع البعيد git pull origin main # إنشاء فرع جديد والانتقال إليه git checkout -b feature/new-login # الاطلاع على حالة الملفات (المعدلة، المؤقتة، غير المتتبعة) git status # الاطلاع على سجل الالتزامات git log --oneline


2. ما هو GitHub؟ (منصة الاستضافة والتعاون)

GitHub هو منصة ويب (Web-based Platform) تستضيف مستودعات Git على خوادمها السحابية. هو مثل "وسائل التواصل الاجتماعي للمبرمجين" ولكنه أقوى بكثير.

الفرق الجوهري:

  • Git: الأداة البرمجية التي تعمل محليًا على جهازك (يمكن استخدامه بدون GitHub).
  • GitHub: الخدمة السحابية التي تستضيف الكود الخاص بك وتتيح التعاون مع الآخرين (تستخدم Git في خلفية النظام).

مميزات GitHub الأساسية:

  1. الاستضافة السحابية: حفظ نسخة احتياطية من كودك على الإنترنت.
  2. التعاون الجماعي: يمكن لأعضاء الفريق العمل على نفس المشروع بسهولة.
  3. طلبات السحب (Pull Requests): آلية مراجعة الكود حيث يطلب المطور دمج فرعه في الفرع الرئيسي بعد مراجعة الزملاء.
  4. مشاكل (Issues): نظام تتبع للأخطاء والمهام والاقتراحات.
  5. الأجراءات (GitHub Actions): أتمتة اختبارات الكود والبناء والنشر (CI/CD).
  6. الصفحات (GitHub Pages): استضافة مواقع ويب ثابتة مجانًا.
  7. الشوكات (Forking): نسخ مشروع شخص آخر إلى حسابك للتعديل عليه (مهم جدًا في المشاريع مفتوحة المصدر).
  8. GitHub Copilot: مساعد ذكاء اصطناعي لكتابة الكود (مدفوع).

3. سير العمل الشائع (Workflow)

للمشاريع الفردية:

كتابة الكود ← git add ← git commit ← git push ← GitHub

للعمل الجماعي (الطريقة الاحترافية):

  1. استنساخ المستودع من GitHub: git clone [url]
  2. إنشاء فرع جديد للميزة الجديدة: git checkout -b feature-login
  3. البرمجة وإجراء التغييرات.
  4. إضافة الملفات: git add .
  5. الالتزام بالتغييرات: git commit -m "إضافة نظام تسجيل الدخول"
  6. الدفع للفرع: git push origin feature-login
  7. فتح Pull Request على GitHub لمراجعة الكود.
  8. المراجعة والموافقة من قبل الفريق.
  9. الدمج (Merge) للفرع في الفرع الرئيسي.
  10. حذف الفرع الفرعي بعد الدمج.

4. مصطلحات متقدمة يجب معرفتها

المصطلحالشرح
Forkنسخة كاملة من مشروع شخص آخر إلى حسابك للتعديل عليها دون التأثير على الأصل
Cloneتحميل نسخة كاملة من مستودع GitHub إلى جهازك المحلي
Fetchجلب معلومات عن التغييرات من المستودع البعيد دون دمجها في كودك المحلي بعد
Rebaseإعادة ترتيب الالتزامات لجعل تاريخ المشروع خطيًا وأنظف (بديل عن الدمج في بعض الحالات)
Stashوضع التغييرات الحالية جانبًا مؤقتًا للعمل على شيء آخر ثم استعادتها لاحقًا
Conflictحدوث تضارب عندما يعدل شخصان نفس السطر في نفس الملف في نفس الوقت (يحل يدويًا)
README.mdملف تعريف المشروع المكتوب بصيغة Markdown يظهر في الصفحة الرئيسية للمستودع
.gitignoreملف يحدد الملفات/المجلدات التي لا ينبغي تتبعها بواسطة Git (مثل ملفات كلمات المرور)

5. هل يمكن الاستغناء عن أحدهما؟

  • يمكن استخدام Git بدون GitHub: هناك بدائل أخرى مثل GitLab و Bitbucket، أو يمكنك استخدام Git محليًا فقط بدون رفع الكود لأي منصة.
  • لا يمكن استخدام GitHub بدون Git: GitHub مبني على Git، فلا يمكن رفع الكود أو إدارته بدون فهم أساسيات Git.

6. نصائح للمبتدئين

  1. التزم بشكل متكرر (Commit Often): كلما أنجزت جزءًا منطقيًا صغيرًا، قم بالالتزام.
  2. رسائل واضحة: اكتب رسائل التزام تصف ماذا و لماذا (مثال: "إصلاح خطأ تحميل الصفحة عند الاتصال البطيء").
  3. فرع واحد لكل ميزة: لا تعمل على الفرع الرئيسي مباشرة في المشاريع الجماعية.
  4. اقرأ قبل تعديل: دائمًا استخدم git pull قبل البدء في العمل لتجنب التعارضات.
  5. لا ترفع أسرارك: استخدم .gitignore لمنع رفع ملفات كلمات المرور أو مفاتيح API.

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

يمكن تحميل كتاب يشرح بشكل وافي عن الموضوع من اللينك المرفق

https://almounkez.com/ebooks/Git-1.0.pdf