دليل Git والتحكم بالإصدارات، كل ما يحتاجه الطالب الجامعي

فريق زدني فريق زدني 22 يناير 2026
6 دقائق للقراءة
دليل Git والتحكم بالإصدارات، كل ما يحتاجه الطالب الجامعي

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

هنا يجي دور Git، أقوى نظام تحكم بالإصدارات (Version Control) في العالم. في هذا الدليل، راح نشرح لك Git من الصفر بأسلوب عملي ومباشر، مع أمثلة واقعية تناسب حياتك كطالب جامعي.

📋 ملخص سريع

  • ما هو التحكم بالإصدارات ولماذا تحتاجه كطالب
  • تثبيت Git وإعداده لأول مرة
  • المفاهيم الأساسية: المستودع، الـ commit، الفروع، الدمج
  • الأوامر الأساسية: init, add, commit, status, log, diff
  • التعامل مع GitHub: إنشاء مستودع، clone, push, pull
  • التفريع (Branching) والدمج (Merging)
  • حل تعارضات الدمج (Merge Conflicts)
  • ملف .gitignore وأهميته
  • أفضل الممارسات لمشاريع الطلاب
  • استخدام Git في مشروع التخرج والعمل الجماعي
  • أخطاء شائعة يقع فيها الطلاب

ما هو التحكم بالإصدارات ولماذا تحتاجه

تخيل أنك تكتب بحث تخرج في Word. تحفظ النسخة الأولى، ثم تعدّل وتحفظ نسخة ثانية، وتستمر حتى يصير عندك:

بحث_نهائي.docx
بحث_نهائي_2.docx
بحث_نهائي_معدل.docx
بحث_نهائي_نهائي.docx
بحث_نهائي_نهائي_الأخير.docx

هذا بالضبط ما يحصل مع الكود لو ما استخدمت نظام تحكم بالإصدارات. Git يحل هذه المشكلة بالكامل:

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

تثبيت Git

على Windows

خطوات التثبيت

  1. حمّل Git من الموقع الرسمي git-scm.com
  2. شغّل ملف التثبيت واتبع الخطوات الافتراضية (اضغط Next في كل شاشة)
  3. بعد التثبيت، افتح Command Prompt أو Git Bash واكتب:
git --version

على Mac

# غالبًا Git يكون مثبت مسبقًا. للتأكد:
git --version

# إذا ما كان مثبت:
xcode-select --install

على Linux (Ubuntu/Debian)

sudo apt update && sudo apt install git

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

بعد التثبيت، عرّف نفسك لـ Git (يُستخدم في تسجيل الـ commits):

git config --global user.name "اسمك"
git config --global user.email "email@example.com"

💡 نصيحة

استخدم نفس البريد الإلكتروني اللي راح تسجّل فيه على GitHub. هذا يربط بين commits المحلية وحسابك على GitHub بشكل صحيح.

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

قبل ما ندخل في الأوامر، لازم تفهم هذه المفاهيم:

المستودع (Repository)

المستودع هو المجلد اللي يتتبعه Git. يحتوي على ملفاتك بالإضافة إلى مجلد مخفي اسمه .git يخزّن فيه Git كل تاريخ التعديلات. عندك نوعين:

  • مستودع محلي (Local): على جهازك
  • مستودع بعيد (Remote): على خادم مثل GitHub أو GitLab

الـ Commit

الـ commit هو “لقطة” (snapshot) من حالة مشروعك في لحظة معينة. كل commit يحتوي على:

  • التعديلات اللي سوّيتها
  • رسالة وصفية تشرح ما عملت
  • تاريخ ووقت التعديل
  • اسم الشخص اللي عمل التعديل

الفرع (Branch)

الفرع هو نسخة مستقلة من المشروع. تقدر تشتغل عليه بدون ما تأثر على الكود الرئيسي. مثلًا: تسوي فرع جديد عشان تضيف ميزة معينة، وبعد ما تخلص وتتأكد إنها شغّالة، تدمجها مع الفرع الرئيسي.

الدمج (Merge)

دمج تعديلات فرع في فرع آخر. مثلًا: دمج فرع الميزة الجديدة في الفرع الرئيسي بعد الانتهاء منها.

ℹ️ تشبيه بسيط

تخيّل Git مثل آلة الزمن لمشروعك. كل commit هو نقطة حفظ في اللعبة، تقدر ترجع لها في أي وقت. والفروع هي عوالم موازية تجرّب فيها أشياء جديدة بدون ما تخرب العالم الرئيسي.

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

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

# إنشاء مجلد للمشروع
mkdir my-project
cd my-project

# تهيئة مستودع Git جديد
git init

هذا ينشئ مجلد .git مخفي داخل مشروعك. من هنا Git يبدأ يتتبع ملفاتك.

تتبع الملفات وعمل Commit

# إنشاء ملف جديد
echo "print('Hello')" > main.py

# عرض حالة المستودع - شوف الملفات الجديدة والمعدلة
git status

# إضافة ملف محدد لمنطقة التجهيز (Staging Area)
git add main.py

# أو إضافة كل الملفات
git add .

# عمل commit مع رسالة وصفية
git commit -m "إضافة الملف الرئيسي للمشروع"

فهم مراحل Git الثلاث

هذا من أهم المفاهيم اللي لازم تفهمها:

  1. Working Directory (مجلد العمل): الملفات اللي تشتغل عليها فعليًا
  2. Staging Area (منطقة التجهيز): الملفات اللي جهّزتها للـ commit القادم باستخدام git add
  3. Repository (المستودع): التعديلات اللي تم حفظها فعليًا بـ git commit
تعديل الملف → git addgit commit
[Working Dir] → [Staging Area] → [Repository]

عرض التاريخ والتعديلات

# عرض سجل الـ commits
git log

# عرض السجل بشكل مختصر
git log --oneline

# عرض التعديلات اللي ما أضفتها بعد (unstaged)
git diff

# عرض التعديلات اللي في منطقة التجهيز (staged)
git diff --staged

التراجع عن التعديلات

# إلغاء تعديلات ملف لم يُضف للـ staging بعد
git checkout -- filename.py

# إزالة ملف من منطقة التجهيز (unstage)
git reset HEAD filename.py

# التراجع عن آخر commit مع الحفاظ على التعديلات
git reset --soft HEAD~1

⚠️ احذر من الأوامر التدميرية

أمر مثل git reset --hard يحذف تعديلاتك بشكل نهائي ولا يمكن استرجاعها بسهولة. دائمًا استخدم --soft إذا كنت تريد التراجع مع الحفاظ على التعديلات. وبشكل عام، قبل ما تنفّذ أمر مش متأكد منه، اعمل نسخة احتياطية من المجلد.

واجب Git محيّرك أو عندك مشكلة في المستودع؟

سواء كان الواجب عن الأوامر الأساسية أو الفروع أو أي موضوع ثاني، أرسل لنا المطلوب ونساعدك تفهمه وتحله.

أرسل واجبك

التعامل مع GitHub

GitHub هو أشهر منصة لاستضافة مستودعات Git على الإنترنت. يتيح لك مشاركة مشاريعك مع الآخرين والتعاون عليها.

إنشاء حساب ومستودع على GitHub

الخطوات

  1. سجّل حساب مجاني على github.com
  2. اضغط على “New repository” (الزر الأخضر)
  3. سمّ المستودع (مثلا: graduation-project)
  4. اختر Public أو Private
  5. اضغط “Create repository

ربط المستودع المحلي بـ GitHub

# إضافة المستودع البعيد
git remote add origin https://github.com/username/my-project.git

# رفع الكود لأول مرة
git push -u origin main

نسخ مستودع موجود (Clone)

# نسخ مستودع من GitHub إلى جهازك
git clone https://github.com/username/project-name.git

# الدخول للمجلد
cd project-name

مزامنة التعديلات

# رفع تعديلاتك إلى GitHub
git push

# جلب تعديلات الآخرين من GitHub
git pull

💡 اختصار مهم

أمر git pull هو اختصار لأمرين: git fetch (جلب التعديلات) + git merge (دمجها). في المشاريع البسيطة، git pull يكفي تمامًا.

التفريع والدمج (Branching & Merging)

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

إنشاء فروع والتنقل بينها

# عرض كل الفروع (النجمة * تدل على الفرع الحالي)
git branch

# إنشاء فرع جديد
git branch feature-login

# الانتقال للفرع الجديد
git checkout feature-login

# أو اختصار: إنشاء والانتقال في أمر واحد
git checkout -b feature-login

سيناريو عملي: إضافة ميزة تسجيل دخول

# 1. أنشئ فرع جديد وانتقل له
git checkout -b feature-login

# 2. اشتغل على الميزة... أضف ملفات... عدّل كود...

# 3. أضف وسوِّ commit
git add .
git commit -m "إضافة صفحة تسجيل الدخول"

# 4. بعد ما تخلص وتتأكد إن كل شيء شغّال، ارجع للفرع الرئيسي
git checkout main

# 5. ادمج فرع الميزة
git merge feature-login

# 6. احذف الفرع بعد الدمج (اختياري)
git branch -d feature-login

مثال على بنية الفروع لمشروع تخرج

main (الفرع الرئيسي - الكود المستقر)
├── feature-login (ميزة تسجيل الدخول)
├── feature-dashboard (ميزة لوحة التحكم)
├── feature-reports (ميزة التقارير)
└── bugfix-auth (إصلاح مشكلة في المصادقة)

مشروعك الجماعي يحتاج تنظيم بـ Git و GitHub؟

نساعدك أنت وفريقك تنظمون المشروع على GitHub بالطريقة الصحيحة: فروع، Pull Requests، وتعاون بدون فوضى.

تواصل معنا

حل تعارضات الدمج (Merge Conflicts)

التعارض يحصل لما اثنين يعدّلون نفس السطر في نفس الملف. Git ما يقدر يقرر تلقائيًا أي تعديل يأخذ، فيترك القرار لك.

كيف يبدو التعارض

عندما تحاول تدمج وتحصل تعارض، Git يعدّل الملف ويحط علامات:

<<<<<<< HEAD
// الكود الموجود في فرعك الحالي
int maxStudents = 30;
=======
// الكود الموجود في الفرع اللي تدمجه
int maxStudents = 40;
>>>>>>> feature-branch

حل التعارض

خطوات حل التعارض

  1. افتح الملف اللي فيه تعارض
  2. ابحث عن علامات <<<<<<< و ======= و >>>>>>>
  3. قرر أي كود تريد تحتفظ فيه (أو ادمج الاثنين يدويًا)
  4. احذف علامات التعارض
  5. احفظ الملف
  6. أضف الملف وسوِّ commit
# بعد حل التعارض يدويًا
git add conflicted-file.py
git commit -m "حل تعارض في ملف الإعدادات"

💡 نصيحة لتقليل التعارضات

اسحب التعديلات (git pull) بشكل متكرر قبل ما تبدأ تشتغل. كل ما كانت نسختك محدّثة، كل ما قلّت احتمالية التعارضات. واتفق مع فريقك إن كل شخص يشتغل على ملفات مختلفة قدر الإمكان.

ملف .gitignore

ملف .gitignore يخبر Git بالملفات والمجلدات اللي لازم يتجاهلها ولا يتتبعها. هذا مهم جدًا لأن بعض الملفات ما لازم ترفعها على GitHub.

إنشاء .gitignore

أنشئ ملف اسمه .gitignore في جذر مشروعك:

# ملفات النظام
.DS_Store
Thumbs.db

# مجلدات بيئة التطوير
.vscode/
.idea/

# ملفات الترجمة والبناء
*.exe
*.o
*.class
build/
dist/

ونضيف أيضًا مجلدات المكتبات والملفات الحساسة والمؤقتة:

# مجلدات المكتبات
node_modules/
venv/
__pycache__/

# ملفات حساسة - مهم جدًا!
.env
config/secrets.json
*.key

# ملفات مؤقتة
*.log
*.tmp

⚠️ لا ترفع ملفات حساسة!

أبدًا لا ترفع كلمات مرور أو مفاتيح API أو ملفات .env على GitHub، حتى لو المستودع خاص (Private). هذا من أكثر الأخطاء الأمنية شيوعًا بين الطلاب. إذا رفعت بالغلط ملف حساس، مجرد حذفه لا يكفي لأنه يبقى في تاريخ الـ commits.

أفضل الممارسات لمشاريع الطلاب

كتابة رسائل commit واضحة

# سيء - ما يعني شيء
git commit -m "تعديلات"
git commit -m "fix"
git commit -m "asdf"

# جيد - واضح ومحدد
git commit -m "إضافة نموذج تسجيل الدخول مع التحقق من المدخلات"
git commit -m "إصلاح خطأ في حساب المعدل التراكمي"
git commit -m "تحسين تصميم صفحة الملف الشخصي"

عمل commits صغيرة ومتكررة

بدل ما تشتغل أسبوع كامل وتسوي commit واحد ضخم، سوِّ commits صغيرة ومتكررة. كل commit لازم يحتوي على تعديل منطقي واحد. هذا يسهّل:

  • الرجوع لنسخة محددة
  • فهم تاريخ التعديلات
  • حل التعارضات

استخدام الفروع

حتى لو تشتغل لوحدك، استخدم الفروع:

# ميزة جديدة
git checkout -b feature/اسم-الميزة

# إصلاح مشكلة
git checkout -b fix/وصف-المشكلة

ملف README.md

أضف ملف README.md لكل مشروع يشرح:

  • ما هو المشروع
  • كيف تشغّله
  • المتطلبات (dependencies)
  • أسماء أعضاء الفريق

تعارضات الدمج أو مشاكل في Git؟ لا تقلق

مشاكل Git محبطة لكنها شائعة. أرسل لنا الخطأ اللي يطلع معك ونساعدك تحله وتفهم السبب عشان ما يتكرر.

اطلب المساعدة

استخدام Git في مشروع التخرج

مشروع التخرج هو المكان المثالي لتطبيق كل ما تعلمته عن Git. هذه استراتيجية عملية:

تنظيم العمل الجماعي

# كل عضو في الفريق يعمل على فرع خاص
git checkout -b feature/login-page        # عضو 1
git checkout -b feature/database-setup    # عضو 2
git checkout -b feature/api-endpoints     # عضو 3

سير العمل المُقترح

سير العمل اليومي

  1. قبل ما تبدأ تشتغل: اسحب آخر التعديلات: git pull origin main
  2. أنشئ فرع جديد للميزة اللي تشتغل عليها
  3. اشتغل وسوِّ commits صغيرة ومتكررة
  4. ارفع فرعك على GitHub: git push origin feature/اسم-الميزة
  5. افتح Pull Request على GitHub لمراجعة الكود
  6. بعد الموافقة: ادمج الفرع في main

Pull Requests

الـ Pull Request (أو PR) هي طريقة لطلب مراجعة كودك قبل دمجه. على GitHub:

  1. ارفع فرعك على GitHub
  2. اضغط “New Pull Request
  3. اختر الفرع المصدر والفرع الهدف
  4. اكتب وصف للتعديلات
  5. زملائك يراجعون الكود ويعلّقون
  6. بعد الموافقة، ادمج الـ PR

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

أخطاء شائعة يقع فيها الطلاب

1. عدم عمل commit بشكل متكرر

كثير من الطلاب يشتغلون أيام بدون commit واحد. إذا حصلت مشكلة، تضيع كل شغلهم. الحل: سوِّ commit بعد كل إنجاز صغير.

2. رسائل commit غير واضحة

رسائل مثل “fix” أو “update” أو “stuff” ما تفيد أحد. بعد شهر ما راح تعرف ماذا عدّلت. اكتب رسائل واضحة ومحددة.

3. العمل على فرع main مباشرة

دائمًا أنشئ فرع جديد للميزات والتعديلات. الفرع الرئيسي (main) لازم يبقى مستقر ويحتوي فقط على كود مُختبر وشغّال.

4. نسيان git pull قبل البدء

إذا ما سحبت آخر التعديلات قبل ما تبدأ تشتغل، راح تواجه تعارضات كثيرة لاحقًا. خلّها عادة: أول شيء تسويه كل يوم هو git pull.

5. رفع ملفات حساسة أو ملفات كبيرة

كلمات المرور، مفاتيح API، ملفات .env، وملفات ضخمة مثل قواعد البيانات أو مقاطع الفيديو: كل هذي لازم تكون في .gitignore.

6. عدم استخدام .gitignore

بدون .gitignore، راح ترفع ملفات ما لها داعي مثل node_modules/ (ممكن يكون حجمها مئات الميجابايت) أو ملفات الـ IDE. هذا يبطئ المستودع ويسبب مشاكل.

7. الخوف من التجربة

Git صُمم عشان تقدر تجرّب بحرية. أي شيء تسويه تقدر تتراجع عنه. لا تخاف تسوي فروع جديدة وتجرّب أفكار مختلفة، الفرع الرئيسي محمي.

أوامر Git المرجعية السريعة

الأمرالوظيفة
git initإنشاء مستودع جديد
git clone URLنسخ مستودع بعيد
git statusعرض حالة الملفات
git add .إضافة كل التعديلات للتجهيز
git commit -m "رسالة"حفظ التعديلات
git pushرفع التعديلات للمستودع البعيد
git pullجلب ودمج التعديلات
git branchعرض الفروع
git checkout -b اسمإنشاء فرع جديد والانتقال له
git merge اسم-الفرعدمج فرع في الفرع الحالي
git log --onelineعرض سجل مختصر
git diffعرض التعديلات
git stashحفظ التعديلات مؤقتًا

الخلاصة

Git ليس مجرد أداة إضافية، هو مهارة أساسية لكل مبرمج. في هذا الدليل غطينا كل ما تحتاجه كطالب جامعي: من التثبيت والأوامر الأساسية إلى التفريع والدمج وحل التعارضات والعمل الجماعي على GitHub.

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

وإذا كنت تتعلم برمجة حاليًا، اطلع على أدلتنا العملية في C++ و Python و Java، واستخدم Git لتتبع تطورك في كل لغة. وللمزيد من المصادر المجانية، راجع أفضل مصادر تعلم البرمجة المجانية.

تحتاج مساعدة في Git أو GitHub؟

نشرح لك أوامر Git ونساعدك تحل مشاكل المستودعات والتعارضات، تتعلم وتنجز واجبك بثقة

تواصل معنا
هل تحتاج خصوصي؟