| # | القسم |
|---|---|
| 1 | المستودع المحلي مقابل المستودع البعيد |
| 2 | ربط مستودع بعيد |
| 3 | دفع التغييرات |
| 4 | استرجاع التغييرات |
| 5 | استنساخ مستودع |
| 6 | سير التعاون الكامل |
| 7 | اختبار — المستودع البعيد |
| 8 | تطبيق عملي — نشر المستودع على GitHub |
| 9 | الخلاصة |
حتى الآن، عاش عملك كله على جهازك (المستودع المحلي). المستودع البعيد (remote) نسخة مستضافة على خادم (GitHub، GitLab، Bitbucket…)، متاحة للفريق كله.
| المستودع المحلي | المستودع البعيد | |
|---|---|---|
| أين؟ | حاسوبك | خادم (GitHub…) |
| لماذا؟ | العمل، الإيداع | المشاركة، النسخ الاحتياطي، التعاون |
| الوصول | أنت وحدك | الفريق كله |
يؤدي المستودع البعيد ثلاثة أدوار: نسخ احتياطي (شفرك تبقى بعد عطل قرص)، ومشاركة (الفريق يصل إلى الشفرة نفسها)، ونقطة التقاء (قاعدة التعاون و CI/CD).
لربط مستودعك المحلي بمستودع بعيد، نضيف إليه مرجعاً يُسمّى بالعرف origin.
# إضافة المستودع البعيد المسمّى "origin"
git remote add origin https://github.com/utilisateur/mon-projet.git
# التحقق من المستودعات البعيدة المعدّة
git remote -v| الأمر | الأثر |
|---|---|
git remote add origin <url> | يربط المحلي بالبعيد (الاسم origin) |
git remote -v | يسرد البعيدين وعناوينهم |
git remote remove origin | يزيل الربط |
originليس سوى اسم بالعرف لـ «المستودع البعيد الرئيسي». يمكن تسميته غير ذلك، لكن الجميع يستخدمorigin— حافظ على هذا العرف.
تمرين مصغّر — اكتب الأمر الذي يربط مستودعك المحلي بالمستودع البعيد https://github.com/moi/projet.git تحت الاسم origin.
git remote add origin https://github.com/moi/projet.gitالدفع (push) هو إرسال إيداعاتك المحلية نحو المستودع البعيد.
# أول دفع: نربط الفرع المحلي بالفرع البعيد بـ -u
git push -u origin main
# في المرات التالية يكفي دفع بسيط
git push| الأمر | متى يُستخدم |
|---|---|
git push -u origin main | أول دفع لفرع (يثبّت التتبع) |
git push | كل الدفعات التالية |
الخيار
-u(أو--set-upstream) يُستخدم مرة واحدة لكل فرع: يربط فرعك المحلي بتوأمه البعيد. بعد ذلك يعرفgit pushوgit pullماذا يفعلان وحدهما.
تمرين مصغّر — اكتب أمر أول دفع للفرع main نحو origin، مع تثبيت التتبع.
git push -u origin mainعندما يدفع زميل شفرة، يجب أن تسترجع تغييراته لتبقى محدَّثاً.
# الاسترجاع والدمج للتغييرات البعيدة
git pull
# الاسترجاع بلا دمج (للمعاينة أولاً)
git fetch| الأمر | الأثر |
|---|---|
git fetch | ينزّل المستجدات البعيدة، دون تعديل عملك |
git merge | يدمج ما استُرجع في فرعك |
git pull | fetch + merge في أمر واحد |
عادة جيدة: نفّذ
git pullقبل بدء العمل وقبل الدفع. هذا يتجنّب معظم التعارضات، لأنك تنطلق دائماً من أحدث إصدار.
تمرين مصغّر — أي أمر يسترجع الإيداعات البعيدة دون دمجها في فرعك، لمعاينتها أولاً؟
git fetchالاستنساخ (clone) هو إنشاء نسخة محلية كاملة من مستودع بعيد موجود — عادة للانضمام إلى مشروع.
# استنساخ مستودع (ينشئ مجلداً وينزّل السجل كله)
git clone https://github.com/utilisateur/mon-projet.git
# الاستنساخ في مجلد باسم محدَّد
git clone https://github.com/utilisateur/mon-projet.git mon-dossierيفعل git clone كل شيء دفعة واحدة:
origin تلقائياً نحو العنوان المستنسَخ.git init + remote add | git clone |
|---|---|
| لنشر مشروع موجود محلياً | لاسترجاع مشروع موجود عن بُعد |
الخلاصة: نستنسخ عندما يوجد المشروع أصلاً على الخط؛ نفعل
init+remote add+pushعندما ننطلق من مشروع محلي لنشره.
تمرين مصغّر — اكتب الأمر الذي يستنسخ المستودع https://github.com/moi/projet.git في مجلد محلي اسمه mon-dossier.
git clone https://github.com/moi/projet.git mon-dossierهذه الدورة اليومية الكاملة للعمل التعاوني مع مستودع بعيد.
| الخطوة | الأمر | الهدف |
|---|---|---|
| 1 | git pull | الانطلاق من آخر إصدار |
| 2 | git add + git commit | تسجيل العمل محلياً |
| 3 | git pull | استرجاع ما تغيّر في الأثناء |
| 4 | git push | نشر الإيداعات |
هذا السير pull → عمل → commit → pull → push هو الروتين الأساسي. في المؤسسة نضيف طلبات السحب ومراجعة الشفرة — هذا موضوع الوحدة 02 (Git المتقدم و GitHub).
السؤال 1: ما المستودع البعيد؟
a) فرع محلي
b) نسخة من المستودع مستضافة على خادم، متاحة للفريق
c) ملف .gitignore
d) إيداع معيَّن
الإجابة: b) — المستودع البعيد (على GitHub مثلاً) يعمل كنسخ احتياطي ونقطة مشاركة وقاعدة للتعاون.
السؤال 2: ماذا يعني عادة origin؟
a) أول إيداع في المشروع
b) الاسم العرفي للمستودع البعيد الرئيسي
c) الفرع الافتراضي
d) نوع تعارض
الإجابة: b) — origin الاسم العرفي للمستودع البعيد الرئيسي المرتبط بالمستودع المحلي.
السؤال 3: أي أمر يرسل إيداعاتك المحلية نحو البعيد؟
a) git pull
b) git push
c) git clone
d) git fetch
الإجابة: b) — git push يرسل الإيداعات المحلية نحو المستودع البعيد. git pull/fetch يفعلان العكس.
السؤال 4: ما الفرق بين git fetch و git pull؟
a) لا فرق، هما مترادفان
b) fetch ينزّل دون دمج؛ pull ينزّل ويدمج
c) pull يحذف السجل
d) fetch يرسل الإيداعات
الإجابة: b) — git pull = git fetch + git merge. fetch وحده يسمح بالمعاينة قبل الدمج.
السؤال 5: في أي حالة نستخدم git clone؟
a) لنشر مشروع محلي فارغ
b) لاسترجاع نسخة كاملة من مستودع موجود أصلاً عن بُعد
c) لإنشاء فرع
d) لحل تعارض
الإجابة: b) — git clone ينسخ مستودعاً بعيداً موجوداً محلياً ويعدّ origin تلقائياً.
انشر المستودع المحلي المنشأ في الدرس 06 على GitHub، ثم حاكي تعاوناً باستنساخه في مكان آخر.
# --- جانب المشروع المحلي الموجود ---
# 1. إنشاء مستودع فارغ على github.com (عبر الواجهة)
# → نحصل على عنوان: https://github.com/vous/mon-premier-depot.git
# 2. ربط المحلي بالبعيد
git remote add origin https://github.com/vous/mon-premier-depot.git
git remote -v
# 3. الدفع لأول مرة
git push -u origin main
# --- محاكاة زميل ينضم إلى المشروع ---
# 4. الاستنساخ في مكان آخر (مجلد آخر)
cd ..
git clone https://github.com/vous/mon-premier-depot.git copie-collegue
cd copie-collegue
# 5. تعديل، إيداع، دفع
echo "مساهمة الزميل" >> README.md
git add README.md
git commit -m "يضيف مساهمة"
git push
# --- العودة إلى المشروع الأصلي ---
# 6. استرجاع المساهمة
cd ../mon-premier-depot
git pullالنتيجة المتوقعة: بعد git pull النهائي، يحتوي ملف README.md في المشروع الأصلي السطر الذي أضافه «الزميل». اكتملت دورة push / clone / push / pull.
لقد أنجزت تعاوناً كاملاً بـ Git وحدك. هذا بالضبط ما يحدث في الفريق، إلا أن النسختين على جهازين مختلفين.
git remote add origin <url> يربط المحلي بالبعيد.git push يرسل؛ git pull (= fetch + merge) يستقبل.git clone يسترجع مستودعاً موجوداً ويعدّ origin تلقائياً.pull → عمل → commit → pull → push.الوحدة 02 — Git المتقدم و GitHub: طلبات السحب، مراجعة الشفرة، إدارة التعارضات في الفريق، وسير العمل المهني.
جميع الحقوق محفوظة. يُحظَر نسخ هذه الدورة أو نشرها أو استخدامها أو تكييفها، كلياً أو جزئياً، دون إذن كتابي مسبق من الدكتور هيثم رحومة.
دورة من إعداد الدكتور هيثم رحومة — تطوير ونشر حلول البيانات