البرمجة
Git و GitHub للمبتدئين — احفظ كودك وشاركه مع العالم
📅 2026-09-25⏱ 11 دقائق قراءة
خلال سلسلة Python، بنيت مشاريع رائعة: آلة حاسبة، تطبيق مهام، وألعاب. لكن هناك سؤال مهم: **ماذا لو ضاع الكود؟ ماذا لو أردت مشاركته مع صديق؟ ماذا لو أردت العودة لنسخة سابقة؟**
هنا يأتي دور **Git و GitHub** — الأدوات التي يستخدمها كل مبرمج محترف في العالم.
بنهاية هذا المقال، ستكون قادراً على:
- فهم ما هو Git ولماذا هو أساسي
- تثبيت Git على جهازك
- إتقان الأوامر الأساسية
- إنشاء حساب GitHub احترافي
- رفع مشاريعك على GitHub
- العمل مع الفروع (Branches)
- التعاون مع مبرمجين آخرين
## 1. ما هو Git؟
### التعريف
**Git** هو نظام **للتحكم في الإصدارات (Version Control System)** — يتتبع كل تعديل تجريه على كودك.
### القياس العملي
تخيل أنك تكتب كتاباً:
- **بدون Git:** تعدل ثم تحفظ، والنسخة القديمة تُفقد للأبد
- **مع Git:** كل تعديل يُحفظ كنسخة منفصلة، يمكنك العودة لأي نسخة سابقة
### لماذا نحتاج Git؟
<table>
<thead>
<tr>
<th>المشكلة</th>
<th>الحل بـ Git</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>ضاع الكود</strong></td>
<td>كل نسخة محفوظة محلياً</td>
</tr>
<tr>
<td><strong>أفسدت شيئاً</strong></td>
<td>يمكنك العودة لأي نسخة سابقة</td>
</tr>
<tr>
<td><strong>تريد المشاركة</strong></td>
<td>أرسل نسخة لأي شخص</td>
</tr>
<tr>
<td><strong>تعمل مع فريق</strong></td>
<td>كل شخص يعمل على فرعه</td>
</tr>
<tr>
<td><strong>تريد تتبع التغييرات</strong></td>
<td>كل تعديل موثّق بالمكان والوقت</td>
</tr>
</tbody>
</table>
## 2. ما هو GitHub؟
### الفرق بين Git و GitHub
الكثير يخلط بينهما. الفرق بسيط:
<table>
<thead>
<tr>
<th>Git</th>
<th>GitHub</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>برنامج</strong> يُثبت على جهازك</td>
<td><strong>موقع إلكتروني</strong> على الإنترنت</td>
</tr>
<tr>
<td>يعمل <strong>محلياً</strong> بدون إنترنت</td>
<td>يحتاج <strong>إنترنت</strong> للوصول</td>
</tr>
<tr>
<td>يحفظ الكود <strong>على جهازك</strong></td>
<td>يحفظ الكود <strong>في السحابة</strong></td>
</tr>
<tr>
<td>مجاني ومفتوح المصدر</td>
<td>مجاني للحسابات الشخصية</td>
</tr>
</tbody>
</table>
### القياس:
**Git** مثل الكاميرا — تصور لحظاتك وتاريخك.
**GitHub** مثل معرض الصور — تعرض فيه إنجازاتك للعالم.
## 3. تثبيت Git
### على ويندوز
1. اذهب إلى: **git-scm.com**
2. حمّل النسخة المناسبة لويندوز
3. شغّل المُثبّت
4. اتبع الخطوات (Next → Next → Finish)
5. **مهم:** اختر **Git Bash** كمحرر افتراضي
### على ماك
**الطريقة 1: عبر Homebrew**
```bash
brew install git
```
**الطريقة 2: مع Xcode**
```bash
xcode-select --install
```
### التأكد من التثبيت
افتح Terminal أو Git Bash واكتب:
```bash
git --version
```
**النتيجة المتوقعة:**
```
git version 2.43.0
```
## 4. الإعداد الأولي
### إعداد اسمك وبريدك
**هذه الخطوة إلزامية** — ستُسجل مع كل تعديل تجريه.
```bash
git config --global user.name "اسمك الكامل"
git config --global user.email "your.email@example.com"
```
### تحقق من الإعدادات
```bash
git config --list
```
### مثال:
```bash
git config --global user.name "Jamal Salem"
git config --global user.email "j_a_salem@hotmail.com"
```
**⚠️ مهم:** استخدم **نفس البريد** المسجل في GitHub، وإلا لن تُربط الـ commits بحسابك.
## 5. الأوامر الأساسية
### 1. إنشاء مستودع جديد
```bash
mkdir my-project
cd my-project
git init
```
**النتيجة:**
```
Initialized empty Git repository in /path/to/my-project/.git/
```
**ما حدث؟** Git أنشأ مجلداً خفياً `.git` يتتبع كل التغييرات.
### 2. معرفة حالة المستودع
```bash
git status
```
**النتيجة المتوقعة:**
```
On branch main
No commits yet
nothing to commit (create/copy files and use "git add" to track)
```
### 3. إضافة الملفات
```bash
# إضافة ملف واحد
git add filename.py
# إضافة كل الملفات
git add .
# إضافة نوع معين من الملفات
git add *.py
```
### 4. حفظ التغييرات (Commit)
```bash
git commit -m "وصف مختصر للتغييرات"
```
**رسالة جيدة:**
```
git commit -m "إضافة دالة حساب المساحة"
```
**رسالة سيئة:**
```
git commit -m "تعديلات" # ❌ غامض
```
### 5. عرض سجل التغييرات
```bash
git log
```
**النتيجة:**
```
commit a1b2c3d4e5f6...
Author: Jamal Salem <j_a_salem@hotmail.com>
Date: Thu Sep 25 10:30:00 2026
إضافة دالة حساب المساحة
```
**نسخة مختصرة:**
```bash
git log --oneline
```
## 6. إنشاء حساب GitHub
### الخطوة 1: التسجيل
1. اذهب إلى: **github.com**
2. اضغط **Sign up**
3. أدخل:
- **Email:** بريدك الإلكتروني
- **Password:** كلمة مرور قوية
- **Username:** اسم مستخدم (مثل `jamalsalem79`)
### الخطوة 2: اختيار الخطة
اختر **Free** (مجانية) — كافية للمشاريع الشخصية.
### الخطوة 3: تأكيد البريد
افتح بريدك، اضغط على رابط التأكيد.
### الخطوة 4: إعداد الملف الشخصي
- **صورة شخصية**
- **نبذة (Bio):** "مطور Python | مهتم بالذكاء الاصطناعي"
- **الموقع:** مدينتك
## 7. ربط Git المحلي بـ GitHub
### الخطوة 1: إنشاء مستودع على GitHub
1. في GitHub، اضغط **+** في الأعلى
2. اختر **New repository**
3. املأ:
- **Repository name:** `my-first-project`
- **Description:** وصف المشروع
- **Public** أو **Private**
- **⚠️ لا تحدد** "Add README" (لأننا سنرفع من المحلي)
4. اضغط **Create repository**
### الخطوة 2: ربط المستودع المحلي
GitHub سيعطيك أوامر جاهزة. انسخها:
```bash
git remote add origin https://github.com/jamalsalem79/my-first-project.git
git branch -M main
git push -u origin main
```
### الخطوة 3: توثيق الدخول
عند أول `push`، سيطلب منك GitHub تسجيل الدخول:
- **الطريقة 1:** كلمة مرور الحساب (مع 2FA)
- **الطريقة 2:** Personal Access Token (**الأفضل**)
#### إنشاء Personal Access Token:
1. اذهب إلى: **GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)**
2. اضغط **Generate new token (classic)**
3. املأ:
- **Note:** "Git Local"
- **Expiration:** 90 days أو No expiration
- **Scopes:** حدد `repo` (كامل)
4. اضغط **Generate**
5. **انسخ الرمز فوراً** (لن يظهر مرة أخرى)
6. استخدمه كلمة مرور عند `push`
## 8. سير العمل اليومي
### السيناريو الكامل:
```bash
# 1. تعديل الملفات في VS Code
# 2. عرض ما تم تعديله
git status
# 3. إضافة الملفات
git add .
# 4. حفظ التغييرات
git commit -m "وصف التعديلات"
# 5. رفع إلى GitHub
git push
```
### مثال عملي:
```bash
# عدلت ملف calculator.py
git status
# سيعرض: modified: calculator.py
git add calculator.py
git commit -m "تحسين دالة القسمة"
git push
```
## 9. رفع مشاريع Python
### إنشاء ملف `.gitignore`
**مهم جداً!** لا ترفع كل الملفات. أنشئ ملف `.gitignore`:
```
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
venv/
env/
ENV/
# IDE
.vscode/
.idea/
*.swp
# OS
.DS_Store
Thumbs.db
# Environment
.env
.env.local
# Database
*.db
*.sqlite3
```
### إنشاء ملف `README.md`
هذا **أول ملف يراه الزائر**. اجعله احترافياً:
```markdown
# 🐍 اسم المشروع
وصف مختصر للمشروع.
## ✨ المميزات
- ميزة 1
- ميزة 2
- ميزة 3
## 🚀 التشغيل
```bash
python main.py
```
## 🛠 التقنيات
- Python 3.12
- Tkinter
- SQLite
## 📸 صور

## 📝 الترخيص
MIT License
```
## 10. الفروع (Branches)
### ما هي الفروع؟
**الفرع** هو نسخة منفصلة من مشروعك، تجرب فيها أفكاراً جديدة دون التأثير على النسخة الأصلية.
### متى تستخدم الفروع؟
<table>
<thead>
<tr>
<th>الموقف</th>
<th>استخدام الفرع</th>
</tr>
</thead>
<tbody>
<tr>
<td>إضافة ميزة جديدة</td>
<td>✅ فرع منفصل</td>
</tr>
<tr>
<td>إصلاح خطأ كبير</td>
<td>✅ فرع منفصل</td>
</tr>
<tr>
<td>تجربة فكرة</td>
<td>✅ فرع منفصل</td>
</tr>
<tr>
<td>تعديل بسيط</td>
<td>لا — مباشرة على main</td>
</tr>
</tbody>
</table>
### الأوامر:
```bash
# عرض الفروع
git branch
# إنشاء فرع جديد
git branch feature-login
# التبديل لفرع
git checkout feature-login
# إنشاء + تبديل في خطوة واحدة
git checkout -b feature-login
# العودة لـ main
git checkout main
```
### دمج الفروع:
```bash
# 1. ارجع للفرع الرئيسي
git checkout main
# 2. ادمج الفرع
git merge feature-login
# 3. ارفع التحديث
git push
```
## 11. سير العمل مع الفرق
### 1. نسخ مشروع موجود (Clone)
```bash
git clone https://github.com/username/repo-name.git
cd repo-name
```
### 2. جلب آخر التحديثات (Pull)
```bash
git pull
```
**متى تستخدمها؟** في بداية كل يوم عمل.
### 3. العمل على فرع خاص
```bash
git checkout -b feature/my-feature
# ... تعديلات
git commit -m "إضافة ميزة جديدة"
git push -u origin feature/my-feature
```
### 4. Pull Request
في GitHub:
1. سيظهر لك زر **"Compare & pull request"**
2. اضغطه
3. اكتب وصفاً للتغييرات
4. اضغط **Create pull request**
5. انتظر مراجعة الفريق
6. بعد الموافقة، اضغط **Merge**
## 12. أوامر مفيدة إضافية
<table>
<thead>
<tr>
<th>الأمر</th>
<th>الوظيفة</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>git diff</code></td>
<td>عرض الفروقات غير المحفوظة</td>
</tr>
<tr>
<td><code>git restore file.py</code></td>
<td>إلغاء تعديلات غير محفوظة</td>
</tr>
<tr>
<td><code>git reset --soft HEAD~1</code></td>
<td>إلغاء آخر commit (مع الاحتفاظ بالتعديلات)</td>
</tr>
<tr>
<td><code>git stash</code></td>
<td>حفظ مؤقت للتعديلات</td>
</tr>
<tr>
<td><code>git stash pop</code></td>
<td>استعادة التعديلات المحفوظة</td>
</tr>
<tr>
<td><code>git remote -v</code></td>
<td>عرض المستودعات المرتبطة</td>
</tr>
<tr>
<td><code>git config --list</code></td>
<td>عرض كل الإعدادات</td>
</tr>
</tbody>
</table>
## 13. أفضل الممارسات
### 1. رسائل Commit واضحة
**✅ جيدة:**
```
إضافة دالة حساب المساحة
إصلاح خطأ في القسمة على صفر
تحسين أداء البحث
```
**❌ سيئة:**
```
تعديلات
تحديث
شيء جديد
```
### 2. Commit صغير ومتكرر
**بدلاً من:**
- commit واحد بـ 500 سطر
**افعل:**
- 10 commits، كل واحد يخص ميزة أو إصلاح
**الفائدة:** سهولة العودة لأي نقطة.
### 3. استخدم `.gitignore`
**لا ترفع أبداً:**
- `__pycache__/`
- `venv/`
- `.env`
- ملفات قواعد البيانات المحلية
### 4. اكتب README جيد
**أول ما يراه زائر مشروعك.**
### 5. استخدم الفروع
**لا تعمل مباشرة على `main`** في المشاريع الكبيرة.
## 14. أخطاء شائعة
### الخطأ 1: `fatal: not a git repository`
**السبب:** نسيت تشغيل `git init` أو أنت في المجلد الخطأ.
**الحل:**
```bash
cd project-folder
git init
```
### الخطأ 2: `failed to push some refs`
**السبب:** GitHub فيه commits غير موجودة محلياً.
**الحل:**
```bash
git pull --rebase
git push
```
### الخطأ 3: نسيت `git add` قبل `git commit`
**الحل:**
```bash
git add .
git commit -m "الرسالة"
```
### الخطأ 4: Commit بـ email خاطئ
**السبب:** لم تُعِدّ `user.email`.
**الحل:**
```bash
git config --global user.email "correct@email.com"
# إصلاح commit الأخير
git commit --amend --reset-author --no-edit
git push --force
```
## 15. مشروعك الأول على GitHub
### رفع آلة حاسبة Python
```bash
# 1. اذهب إلى مجلد المشروع
cd python-calculator
# 2. تهيئة Git
git init
# 3. إنشاء .gitignore
# (انظر القسم 9)
# 4. إنشاء README.md
# (انظر القسم 9)
# 5. إضافة كل الملفات
git add .
# 6. حفظ أول commit
git commit -m "النسخة الأولى من الآلة الحاسبة"
# 7. ربط بـ GitHub
git remote add origin https://github.com/username/python-calculator.git
# 8. الفرع الرئيسي
git branch -M main
# 9. رفع
git push -u origin main
```
**بعد الرفع:**
افتح GitHub، سترى مشروعك جاهزاً مع:
- ✅ الملفات
- ✅ README.md
- ✅ سجل التعديلات
## 16. GitHub كسيرة ذاتية
### لماذا GitHub مهم؟
<table>
<thead>
<tr>
<th>الفائدة</th>
<th>الشرح</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>إثبات مهاراتك</strong></td>
<td>أصحاب العمل يرون كودك الفعلي</td>
</tr>
<tr>
<td><strong>معرض أعمال</strong></td>
<td>بدلاً من "أعرف Python"، أظهر مشاريعك</td>
</tr>
<tr>
<td><strong>التعاون</strong></td>
<td>يمكنك العمل مع مبرمجين عالميين</td>
</tr>
<tr>
<td><strong>المساهمة</strong></td>
<td>ساهم في مشاريع مفتوحة المصدر</td>
</tr>
</tbody>
</table>
### نصائح لـ GitHub احترافي:
1. **ارفع 5-10 مشاريع** على الأقل
2. **كل مشروع له README واضح**
3. **استخدم أسماء ملفات ذات معنى**
4. **لا ترفع كوداً منسوخاً**
5. **استمر بالتحديث** (النشاط الأخضر مهم)
## قائمة تحقق — هل تعلمت؟
<table>
<thead>
<tr>
<th>المهارة</th>
<th>الحالة</th>
</tr>
</thead>
<tbody>
<tr>
<td>تثبيت Git وإعداده</td>
<td>⬜</td>
</tr>
<tr>
<td>إنشاء مستودع محلي</td>
<td>⬜</td>
</tr>
<tr>
<td>إضافة وحفظ التغييرات</td>
<td>⬜</td>
</tr>
<tr>
<td>إنشاء حساب GitHub</td>
<td>⬜</td>
</tr>
<tr>
<td>ربط المحلي بالبعيد</td>
<td>⬜</td>
</tr>
<tr>
<td>رفع مشروع كامل</td>
<td>⬜</td>
</tr>
<tr>
<td>العمل مع الفروع</td>
<td>⬜</td>
</tr>
<tr>
<td>استخدام .gitignore وREADME</td>
<td>⬜</td>
</tr>
</tbody>
</table>
## الخلاصة
في هذا المقال، تعلمت:
1. **ما هو Git** — نظام التحكم في الإصدارات
2. **ما هو GitHub** — منصة استضافة الكود
3. **التثبيت والإعداد** — تهيئة Git على جهازك
4. **الأوامر الأساسية** — add, commit, push, pull
5. **إنشاء حساب GitHub** — وربطه بـ Git المحلي
6. **سير العمل اليومي** — من التعديل للرفع
7. **الفروع (Branches)** — تجربة آمنة للميزات الجديدة
8. **التعاون** — Pull Requests والمراجعة
9. **أفضل الممارسات** — رسائل واضحة وcommit صغير
10. **GitHub كسيرة ذاتية** — إظهار مهاراتك للعالم
**Git و GitHub ليسا اختياريين — إنهما أساس كل مبرمج محترف.**
---
## 🎉 نهاية سلسلة Python!
بهذا المقال، **أكملنا سلسلة تعلم Python كاملة** — من الصفر إلى الاحتراف:
<table>
<thead>
<tr>
<th>#</th>
<th>المقال</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>تثبيت Python على ويندوز وماك</td>
</tr>
<tr>
<td>2</td>
<td>أول برنامج لك بلغة Python</td>
</tr>
<tr>
<td>3</td>
<td>المتغيرات وأنواع البيانات</td>
</tr>
<tr>
<td>4</td>
<td>الشروط (if/else)</td>
</tr>
<tr>
<td>5</td>
<td>الحلقات (Loops)</td>
</tr>
<tr>
<td>6</td>
<td>الدوال (Functions)</td>
</tr>
<tr>
<td>7</td>
<td>5 مشاريع Python للمبتدئين</td>
</tr>
<tr>
<td>8</td>
<td>بناء آلة حاسبة</td>
</tr>
<tr>
<td>9</td>
<td>بناء تطبيق مهام كامل</td>
</tr>
<tr>
<td>10</td>
<td>Git و GitHub (هذا المقال)</td>
</tr>
</tbody>
</table>
**الآن أنت مبرمج Python حقيقي! 🐍**
---
## 🎁 هدية خاصة
لإكمال رحلتك، إليك خارطة طريق مقترحة:
### المستوى التالي:
1. **تعلم Flask أو Django** — لتطوير الويب
2. **تعلم Pandas وNumPy** — لتحليل البيانات
3. **تعلم TensorFlow** — للذكاء الاصطناعي
4. **المساهمة في Open Source** — على GitHub
5. **بناء مشروعك الخاص** — فكرة تحبها
### موادر مفيدة:
- **freeCodeCamp** — دورات مجانية
- **GitHub Explore** — مشاريع مفتوحة المصدر
- **Real Python** — مقالات ودروس
- **DeepSeek** — مساعد ذكي بالعربية
---
**شكراً لك على متابعة السلسلة كاملة! 🎉**
**ما المشروع القادم الذي ستبنيه؟ شاركنا في التعليقات!**