| # | القسم |
|---|---|
| 1 | المناطق الثلاث في Git |
| 2 | تهيئة مستودع محلي |
| 3 | تتبع الملفات |
| 4 | إنشاء إيداع |
| 5 | ممارسات جيدة للرسائل |
| 6 | ملف .gitignore |
| 7 | اختبار — المستودع المحلي والإيداعات |
| 8 | تطبيق عملي — أول مستودع لك |
| 9 | الخلاصة |
لفهم الإيداعات، يجب أولاً تصوّر المناطق الثلاث التي يمرّر عبرها Git ملفاتك.
| المنطقة | الوصف | الأمر للدخول إليها |
|---|---|---|
| مجلد العمل | ملفاتك كما تحرّرها | (تحرير مباشر) |
| منطقة التجهيز (الفهرس) | التغييرات التي تجهّزها للتسجيل | git add |
| المستودع المحلي | السجل الدائم للإيداعات | git commit |
تشبيه: تجهيز طرد. مجلد العمل مكتبك المبعثر؛ منطقة التجهيز الصندوق الذي تضع فيه ما تريد إرساله؛ الإيداع لحظة ختم الصندوق وأرشفته.
لتحويل مجلد عادي إلى مستودع Git:
# الانتقال إلى مجلد المشروع
cd mon-projet
# تهيئة المستودع
git initهذا ينشئ مجلداً فرعياً مخفياً .git/ يحتوي السجل كله وإعداد المستودع.
# التحقق من حالة المستودع المُنشأ للتو
git statusتحذير: لا تحذف مجلد
.git/أبداً: إنه يحتوي السجل كله. حذفه يعني فقدان الأرشفة (دون فقدان ملفاتك الحالية).
تمرين مصغّر — اكتب الأمر الذي يحوّل المجلد الحالي إلى مستودع Git، ثم الأمر الذي يعرض حالته.
git init
git statusيمكن أن يكون الملف متتبَّعاً (tracked) أو غير متتبَّع (untracked) من Git.
# تجهيز ملف محدَّد
git add fichier.txt
# تجهيز كل تغييرات المجلد
git add .
# رؤية الحالة (متتبَّع / غير متتبَّع / مجهَّز)
git status| الأمر | الأثر |
|---|---|
git add fichier.txt | يجهّز ملفاً محدَّداً |
git add . | يجهّز كل الملفات المعدَّلة/الجديدة |
git restore --staged fichier.txt | يخرج ملفاً من منطقة التجهيز |
git status | يعرض حالة كل ملف |
git statusأفضل صديق لك: استخدمه قبل وبعد كلgit addلترى بالضبط ما يستعد Git لتسجيله.
تمرين مصغّر — عدّلت للتو index.html و style.css. اكتب الأمر الذي يجهّز (stage) index.html فقط.
git add index.htmlالإيداع (commit) لقطة (snapshot) لمشروعك في لحظة معيّنة، مرفوقة برسالة تفسّر التغيير.
# التجهيز ثم التسجيل
git add .
git commit -m "إضافة صفحة الاستقبال"كل إيداع يملك:
| العنصر | الوصف |
|---|---|
| معرّف (hash) | مثال a1b2c3d… — فريد |
| مؤلف | اسمك + بريدك (إعداد الدرس 05) |
| تاريخ | ختم زمني للإيداع |
| رسالة | وصف التغيير |
| أب | الإيداع السابق (سلسلة السجل) |
# رؤية سجل الإيداعات
git log
git log --oneline # نسخة مختصرةالإيداع الجيد ذرّي: يفعل شيئاً واحداً متماسكاً. تجنّب الإيداع الجامع «أشياء كثيرة» — فضّل عدة إيداعات صغيرة واضحة.
تمرين مصغّر — جهّز كل تغييراتك وأنشئ إيداعاً رسالته «يضيف صفحة الاتصال».
git add .
git commit -m "يضيف صفحة الاتصال"رسالة الإيداع تروي قصة المشروع. رسالة جيدة توفّر ساعات على الفريق كله (وعليك بعد 6 أشهر).
| رسالة سيئة | رسالة جيدة |
|---|---|
update | يحدّث تبعية Maven إلى 3.9 |
fix bug | يصحّح الانهيار عند البدء إن غاب الإعداد |
wip | يضيف التحقق من نموذج الدخول |
feat: يضيف المصادقة بالرمز
fix: يصحّح ترقيم صفحات النتائج
docs: يكمّل README التثبيتتلميح للتذكّر: الرسالة الجيدة تُكمل الجملة «إذا طبّقت هذا الإيداع، فسوف…». مثال: «…إضافة صفحة الاستقبال».
بعض الملفات يجب ألا تُؤرشف أبداً: ملفات مؤقتة، تبعيات ضخمة، أسرار، ملفات مجمَّعة. ملف .gitignore يخبر Git بتجاهلها.
# مثال محتوى ملف .gitignore
target/
node_modules/
*.log
.env
.DS_Store| ما يُتجاهل | لماذا |
|---|---|
node_modules/، target/ | تُعاد بناؤها تلقائياً، ضخمة |
.env، *.key | أسرار — أبداً في Git! |
*.log، *.tmp | ملفات مؤقتة بلا قيمة |
قاعدة ذهبية للأمن: لا تودع أبداً كلمات مرور أو مفاتيح API أو أسراراً. ما إن يدخل السر سجل Git، يبقى فيه — حتى لو حُذف لاحقاً. ضع
.envفي.gitignoreمنذ البداية.
تمرين مصغّر — اكتب السطر الذي يُضاف إلى .gitignore لمنع Git من أرشفة ملف الأسرار .env.
.envالسؤال 1: أي أمر يحوّل مجلداً عادياً إلى مستودع Git؟
a) git start
b) git init
c) git new
d) git create
الإجابة: b) — git init ينشئ المجلد الفرعي .git/ الذي يحتوي السجل ويجعل المجلد مستودعاً.
السؤال 2: ما الترتيب الصحيح للمناطق الثلاث في Git؟
a) المستودع → التجهيز → مجلد العمل
b) مجلد العمل → التجهيز → المستودع المحلي
c) التجهيز → المستودع → مجلد العمل
d) مجلد العمل → المستودع → التجهيز
الإجابة: b) — نحرّر (مجلد العمل)، نجهّز بـ git add (التجهيز)، ثم نسجّل بـ git commit (المستودع المحلي).
السؤال 3: لماذا يُستخدم git add؟
a) لإنشاء إيداع
b) لتجهيز تغييرات في منطقة التجهيز
c) لحذف ملف
d) لإرسال الشفرة إلى GitHub
الإجابة: b) — git add ينقل التغييرات من مجلد العمل إلى منطقة التجهيز، قبل الإيداع.
السؤال 4: أيها رسالة إيداع جيدة؟
a) truc
b) wip
c) يصحّح الانهيار عند البدء إن غاب الإعداد
d) .
الإجابة: c) — واضحة، بصيغة الأمر، وتفسّر التغيير. الباقي غامض وعديم النفع في السجل.
السؤال 5: لماذا نستخدم .gitignore؟
a) لتسريع الحاسوب
b) لمنع Git من أرشفة ملفات معيّنة (مؤقتة، أسرار، تبعيات)
c) لحذف السجل
d) لتجاهل الإيداعات
الإجابة: b) — .gitignore يسرد الملفات التي يجب أن يتجاهلها Git، لا سيما الأسرار (.env) والمجلدات القابلة لإعادة البناء (node_modules/).
أنشئ مستودعاً محلياً، أضف ملفاً، تجاهل ملف سر، وقم بإيداعين نظيفين.
# 1. إنشاء المجلد والدخول إليه
mkdir mon-premier-depot
cd mon-premier-depot
# 2. تهيئة المستودع
git init
# 3. إنشاء ملف محتوى و .gitignore
echo "# مشروعي" > README.md
echo ".env" > .gitignore
echo "SECRET=123" > .env # يجب تجاهل هذا الملف
# 4. التحقق من الحالة (.env يجب ألا يظهر)
git status
# 5. الإيداع الأول
git add README.md .gitignore
git commit -m "يهيئ المشروع مع README و gitignore"
# 6. تعديل ثم إيداع ثانٍ
echo "وصف المشروع" >> README.md
git add README.md
git commit -m "يكمّل الوصف في README"
# 7. استشارة السجل
git log --onelineالنتيجة المتوقعة:
b2c3d4e يكمّل الوصف في README
a1b2c3d يهيئ المشروع مع README و gitignoreتحقق من أن
.envلا يظهر أبداً فيgit status: هذا دليل أن.gitignoreيعمل وأن سرك محمي.
git add) → المستودع المحلي (git commit).git init ينشئ المستودع (مجلد .git/)..gitignore يحمي الأسرار ويستبعد الملفات غير المفيدة.الدرس 07 — الفروع والسجل: العمل على عدة إصدارات بالتوازي دون كسر الإصدار الرئيسي.
جميع الحقوق محفوظة. يُحظَر نسخ هذه الدورة أو نشرها أو استخدامها أو تكييفها، كلياً أو جزئياً، دون إذن كتابي مسبق من الدكتور هيثم رحومة.
دورة من إعداد الدكتور هيثم رحومة — تطوير ونشر حلول البيانات