كيف تدرس هذا المسار؟
- اقرأ المفهوم — Git «آلة زمن» لمشروعك.
- انسخ أوامر Terminal وجرّبها في مجلد تجريبي.
- نفّذ المهمة وسجّل commit حقيقي إن أمكن.
- أكمل الاختبار — التقدّم يُحفظ على جهازك.
محتوى أصلي من Mesue Learn — عملي ومناسب لسن +12 وما فوق.
1. لماذا Git؟ — «آلة الزمن» لمشاريعك
الهدف: تفهم فكرة التحكم بالنسخ (Version Control) قبل كتابة أي أمر.
تخيّل أنك تكتب واجباً في Word وتنسخ الملف كل يوم: واجب_v1.docx، واجب_v2.docx... فوضى!
Git برنامج يحفظ «لقطات» (Snapshots) لمشروعك — كل لقطة اسمها commit — مع رسالة توضّح ماذا غيّرت.
لماذا يهمك؟
• ترجع لنسخة قديمة إن كسرت شيئاً
• تعمل على فرع (branch) تجربة من دون إفساد النسخة الرئيسية
• تتعاون مع أصدقاء دون استبدال ملفات بعضكم
Git = على جهازك. GitHub = موقع يستضيف نسخة مشروعك على الإنترنت ويسهّل التعاون.
- Git يحفظ تاريخ المشروع — ليس مجرد نسخ احتياطي يدوي
- Commit = لقطة + رسالة وصف
- Branch = خط تطوير منفصل
- GitHub = مشاركة ومراجعة — Git = المحرك
صورة ذهنية
[ملفات مشروعك]
|
v
[Git commits]
v1 → v2 → v3
|
v
[GitHub remote]
مختبر: قبل وبعد Git
اكتب 3 مشاكل حصلت لك (فقدان ملف، نسخة قديمة، تعارض مع صديق) — وكيف كان Git ليحلها.
مهمة عملية
اشرح لصديق في 4 جمل: ما الفرق بين Git و GitHub؟
2. تثبيت Git وإعداد هويتك
الهدف: تثبّت Git وتضبط اسمك وبريدك — كل commit يحمل توقيعك.
1) حمّل Git من git-scm.com (Windows/Mac/Linux)
2) افتح Terminal أو PowerShell
3) تحقق:
git --version
إعداد الهوية (مرة واحدة):
git config --global user.name "اسمك"
git config --global user.email "email@example.com"
استخدم بريد GitHub إن نويت الربط لاحقاً.
أوامر مفيدة:
git config --list
git config --global init.defaultBranch main
main = اسم الفرع الرئيسي الافتراضي (بدل master القديم).
- git --version للتحقق من التثبيت
- user.name و user.email إلزاميان للتعاون
- --global = لكل مشاريعك على الجهاز
- defaultBranch main عادةً
صورة ذهنية
git config
|
+--+--+
v v
name email
|
v
[كل commit]
مختبر: تحقق من الإعداد
نفّذ git config --list | findstr user (Windows) أو grep user (Mac/Linux) — هل اسمك وبريدك ظاهران؟
مهمة عملية
ثبّت Git إن لم يكن مثبتاً، واضبط الاسم والبريد، والتقط لقطة شاشة لـ git --version.
3. أول مستودع — init و add و commit
الهدف: تنشئ مشروعاً محلياً وتحفظ أول commit.
mkdir mesue-demo && cd mesue-demo
# ملفات
echo '# مشروع تجريبي' > README.md
echo 'print("مرحباً")' > hello.py
# تهيئة Git
git init
git status # أحمر = غير متتبّع
git add README.md hello.py
git status # أخضر = staged
git commit -m "أول commit: README و hello.py"
git log --oneline # تاريخ مختصر
الدورة: عدّل ملف → git add → git commit -m "رسالة واضحة"
رسالة commit جيدة: «أضفت صفحة About» — سيئة: «تعديل».
- git init مرة واحدة لكل مشروع
- git add يجهّز الملفات للcommit
- git commit -m يحفظ اللقطة
- git status صديقك دائماً
صورة ذهنية
working → staged → committed
[تعديل] [add] [commit]
\ | /
git status
مختبر: 3 commits
أضف ملف notes.txt بثلاث أسطر، commit. عدّل README، commit ثانٍ. راجع git log — يجب أن ترى 3 commits.
مهمة عملية
أنشئ مجلد mesue-git-lab بملفين وcommitين على الأقل — رسائل واضحة بالعربية أو الإنجليزية.
4. الفروع — branch للتجربة بأمان
الهدف: تنشئ فرعاً، تعمل عليه، وتدمجه في main.
git branch # قائمة الفروع
git branch feature-x # فرع جديد
git switch feature-x # انتقل (أو checkout)
# عدّل وأ commit على الفرع
git add .
git commit -m "تجربة على feature-x"
# العودة ودمج
git switch main
git merge feature-x
الفكرة: main مستقر، feature/* للتجارب.
حذف فرج بعد الدمج:
git branch -d feature-x
- main = النسخة الرئيسية المستقرة
- branch = نسخة متوازية للتطوير
- merge يدمج التغييرات
- رسائل commit واضحة تسهّل المراجعة
صورة ذهنية
main: A---B---C---M
\ /
feature: D---E
مختبر: فرعين
فرع add-style يغيّر README، فرع fix-typo يصلح خطأ — ادمج كلاهما في main بالترتيب.
مهمة عملية
أنشئ فرع learn-day1، أضف ملف goals.txt، commit، ثم merge إلى main.
5. GitHub — حساب ومستودع على السحابة
الهدف: تفتح حساباً وتنشئ repository فارغاً وتربطه محلياً.
1) سجّل على github.com (مجاني)
2) New repository → اسم: mesue-portfolio
3) Public (للمحفظة) أو Private
4) لا تضف README إن لديك مشروع محلي — أو العكس
ربط remote:
git remote add origin https://github.com/USER/mesue-portfolio.git
git remote -v
أو Clone من GitHub لمشروع موجود:
git clone https://github.com/USER/repo.git
SSH vs HTTPS: HTTPS أسهل للمبتدئ (username + token).
- Repository = مجلد مشروع على GitHub
- origin = الاسم الافتراضي للremote
- Public = أي شخص يرى الكود
- Private = أنت ومن تدعوهم فقط
صورة ذهنية
[جهازك] [GitHub]
mesue-portfolio --push--> origin/main
<--pull--
مختبر: repo فارغ
أنشئ repo باسم mesue-learn-git-test — Public — بدون README. انسخ رابط HTTPS.
مهمة عملية
افتح حساب GitHub إن لم يكن لديك، وأنشئ مستودعاً تجريبياً.
6. push و pull — مزامنة جهازك مع GitHub
الهدف: ترفع commits وتسحب تحديثات الفريق.
أول رفع:
git push -u origin main
-u يحفظ الربط — بعدها:
git push
سحب تحديثات:
git pull origin main
# قبل push تأكد:
git status
git log origin/main..HEAD # commits لم تُرفع
خطأ شائع: push قبل pull عندما سبق زميلك — Git يطلب pull أولاً أو merge.
- push يرسل commits إلى GitHub
- pull يجلب ويدمج التحديثات
- git fetch يجلب دون دمج — للمراقبة
- pull قبل push عند العمل الجماعي
صورة ذهنية
local main ----push----> GitHub
local main <---pull----- GitHub
مختبر: رفع وتعديل على الويب
بعد push، عدّل README من GitHub (Edit) → pull محلياً → هل ظهر التعديل؟
مهمة عملية
ارفع مشروع mesue-git-lab إلى GitHub — تأكد أن README يظهر على الموقع.
7. Pull Request — مراجعة قبل الدمج
الهدف: تفهم سير PR في الفريق: فرع → مراجعة → merge.
في الفريق الحقيقي:
1) git switch -c feature/login
2) commits على الفرع
3) git push -u origin feature/login
4) على GitHub: Compare & pull request
5) زميل يراجع (Review) — تعليقات أو موافقة
6) Merge pull request
7) git switch main && git pull
PR = «اقترح دمج هذه التغييرات» — ليس مجرد push لـ main مباشرة.
Mesue نصيحة: PR صغير = مراجعة أسرع. عنوان واضح + وصف «ماذا ولماذا».
- PR يربط branch بـ main عبر مراجعة
- Review يكتشف الأخطاء قبل الدمج
- Squash merge = commit واحد نظيف
- احترم تعليقات المراجع
صورة ذهنية
feature --push--> GitHub
|
v
[Open PR]
|
v
Review → Merge → main
مختبر: PR تجريبي
على repo تجريبي: فرع docs-update → عدّل README → push → افتح PR → Merge بنفسك.
مهمة عملية
افتح PR واحداً (حتى على repo شخصي) بوصف عربي من 3 أسطر.
8. .gitignore والأسرار — لا ترفع كلمات السر
الهدف: تستثني ملفات حساسة وتفهم لماذا الأسرار لا تدخل Git أبداً.
ملف .gitignore يخبر Git: «تجاهل هذه الملفات».
مثال:
.env
*.log
node_modules/
__pycache__/
.DS_Store
credentials/
إن رفعت كلمة سر بالخطأ:
• غيّرها فوراً (اعتبرها مسرّبة)
• git rm --cached .env
• commit + push
Git يحفظ التاريخ — حذف الملف لا يمحو commit القديم من السحابة دون أدوات متقدمة.
قاعدة Mesue: credentials/ و .env خارج Git دائماً.
- .gitignore قبل أول commit أفضل
- لا passwords ولا API keys في Git
- git rm --cached لإزالة ملف متتبّع
- إن تسرّب سر — غيّره فوراً
صورة ذهنية
[ملفات]
|
.gitignore → [Git يتتبع]
|
.env → ✗ ممنوع
مختبر: ignore
أنشئ secret.txt و.env — أضف .env لـ gitignore — git status يجب ألا يعرض .env.
مهمة عملية
أضف .gitignore مناسباً لمشروعك التجريبي — تأكد أن git status نظيف.
9. التعاون — Issues و Fork و تعارض بسيط
الهدف: تستخدم Issues للمهام وتفهم Fork و merge conflicts مبدئياً.
Issues على GitHub:
• «Bug: الزر لا يعمل على الموبايل»
• «Feature: صفحة About»
• Labels: bug, enhancement, good first issue
Fork = نسخة مستودع شخص ينسخها ليعدّل — ثم PR للم original.
تعارض merge (Conflict):
Git لا يدمج تلقائياً إن عدّل شخصان نفس السطر.
git pull → conflict markers:
<<<<<<< HEAD
=======
>>>>>>> branch
عدّل الملف يدوياً، احذف العلامات، add، commit.
- Issues = قائمة مهام/أخطاء
- Fork للمساهمة في مشاريع الغير
- Conflicts طبيعية — حلها يدوياً
- تواصل مع الفريق قبل merge كبير
صورة ذهنية
Issue → branch → PR → merge
Fork → clone → PR upstream
مختبر: Issue
افتح Issue على repo تجريبي: «تحسين README» — اربطه بcommit لاحقاً في PR.
مهمة عملية
أنشئ Issue واحداً + label إن أمكن — أو اشرح الفرق بين Fork و Clone.
10. المشروع النهائي — محفظة GitHub
الهدف: تسلّم مستودع portfolio بـ README عربي يعرض مشاريع Mesue Learn.
المطلوب: repo Public اسمه mesue-portfolio (أو مشابه)
محتويات:
• README.md عربي: من أنت، مهارات، 3–5 مشاريع (روابط)
• مجلد projects/ أو links لمسارات Learn
• .gitignore سليم
• 5+ commits بتاريخ منطقي
• (اختياري) GitHub Pages لصفحة بسيطة
معيار النجاح:
✓ الرابط يفتح لأي زائر
✓ README واضح خلال 30 ثانية
✓ لا أسرار في الملفات
✓ commit أخير: «Portfolio ready for review»
- README = واجهة محفظتك
- commits منتظمة تظهر انضباطاً
- Public للعرض — Private للمشاريع السرية
- اربط مسارات Learn التي أنجزتها
صورة ذهنية
README → مشاريع → روابط
|
v
[GitHub Profile]
|
v
فرص / تعلّم / عمل
مختبر: العرض النهائي
شارك رابط repo مع صديق — هل فهم مشاريعك من README دون شرح إضافي؟
مهمة عملية
انشر mesue-portfolio على GitHub + README عربي + رابط في تعليق Mesue Learn إن رغبت.
محفظتك على GitHub جاهزة للانطلاق
اربط مسارات Learn في README، ثم جرّب مسار Flutter أو السحابة لنشر مشروعك.