البرمجة

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 ## 📸 صور ![لقطة شاشة](screenshot.png) ## 📝 الترخيص 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** — مساعد ذكي بالعربية --- **شكراً لك على متابعة السلسلة كاملة! 🎉** **ما المشروع القادم الذي ستبنيه؟ شاركنا في التعليقات!**