في هذا الدرس 6تصفّح المواضيع
عند الانضمام إلى مشروع قائم أو استكشاف مكتبة مفتوحة المصدر على GitHub، يقع المبتدئون غالباً في خطأ تنزيل المشروع كملف مضغوط ZIP. غير أن الملف المضغوط يخلو تماماً من مجلد .git؛ مما يفقدك سجل الالتزامات والفروع والارتباط بالخادم السحابي.
في المقابل، ينزّل الأمر git clone <url> قاعدة بيانات المستودع كاملةً مع تاريخها وفروعها، ويجهز ملفات العمل داخل مجلد جديد، ويضبط الرابط البعيد origin تلقائياً في خطوة واحدة.
# Clone repository over HTTPS into ./web-app folder
git clone https://github.com/closetag/web-app.git
# Or clone using SSH URL format
git clone [email protected]:closetag/web-app.git
ينشئ الأمر git clone افتراضياً مجلداً محلياً يحمل نفس اسم المستودع السحابي مثل web-app. وإذا أردت حفظ النسخة في مجلد باسم مختلف، مرّر الاسم المخصص كمعامل أخير في نهاية الأمر.
# Clone into a custom folder named client-portal
git clone https://github.com/closetag/web-app.git client-portal
cd client-portal
git status -s
بمجرد اكتمال عملية الاستنساخ والدخول إلى مجلد المشروع، يمكنك تنفيذ git remote -v وgit branch -a لتلاحظ أن Git قد سجّل عنوان المصدر تلقائياً تحت اللقب origin وأنشأ مراجع التتبع البعيدة مثل remotes/origin/main.
cd client-portal
git remote -v
# origin https://github.com/closetag/web-app.git (fetch)
# origin https://github.com/closetag/web-app.git (push)
git branch -a
يفعّل الأمر git clone افتراضياً الفرع الرئيسي للمستودع البعيد مثل main. وعندما يعمل فريقك على فرع تطوير محدد مثل develop، يمكنك تمرير الخيار -b <branch> ليتم التبديل إليه فور انتهاء التنزيل.
# Clone and immediately check out the develop branch
git clone -b develop https://github.com/closetag/web-app.git
cd web-app
git branch
قد تضم المشاريع الكبيرة عشرات الآلاف من الالتزامات المتراكمة عبر سنوات طويلة. وإذا كنت تحتاج فقط إلى أحدث نسخة من الكود لتشغيل اختبارات البناء السريع أو المعاينة الفورية، فاستخدم الأمر git clone --depth 1 <url> لتنفيذ النسخ الخفيف الذي يجلب آخر التزام فقط.
# Shallow clone downloading only the latest commit
git clone --depth 1 https://github.com/closetag/app.git fast-app
cd fast-app
git log --oneline
يلخص الجدول التالي الفروق الدقيقة بين أوضاع الأمر git clone ومقارنتها بالأمر git init:
| الأمر والصيغة | إنشاء سجل .git؟ | إعداد origin تلقائياً؟ | حالة الاستخدام الهندسية |
|---|---|---|---|
git init | نعم (مستودع جديد فارغ) | لا (يتطلب git remote add) | تأسيس مشروع محلي جديد تماماً من الصفر |
git clone <url> | نعم (كامل التاريخ) | نعم (يرتبط بالرابط تلقائياً) | تنزيل مستودع بعيد قائم بكامل تاريخه |
git clone <url> <dir> | نعم (كامل التاريخ) | نعم (داخل المجلد المخصص) | استنساخ المشروع داخل مجلد محلي باسم مختلف |
git clone -b <branch> <url> | نعم (كامل التاريخ) | نعم (يفعّل الفرع المحدد) | بدء العمل مباشرة على فرع غير الفرع الافتراضي |
git clone --depth 1 <url> | نعم (أحدث لقطة فقط) | نعم (سجل خفيف ومختصر) | تسريع التنزيل في بيئات الاختبار والمشاريع الضخمة |
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تعرفت في هذا الدرس على الفارق الجوهري بين git clone وتنزيل ملفات ZIP، واستنسخت المستودعات في مجلدات افتراضية ومخصصة، وتحققت من إعداد origin التلقائي واستخدام خيارَي -b و--depth 1. الخطوة التالية: انتقل الآن إلى الدرس 28 «جلب التحديثات ومزامنتها عبر git fetch وgit pull» لمزامنة تعديلات الفريق الجديدة مع مستودعك المحلي.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 git clone أمر الاستنساخ git clone
- الأمر المسؤول عن نسخ مستودع بعيد قائم بكامل تاريخ التزاماته وإعدادات الرابط origin إلى مجلد محلي.
- للمراجعة
- 02 Shallow Clone النسخ الخفيف Shallow Clone
- استنساخ المستودع باستخدام الخيار --depth 1 لتنزيل أحدث التزام فقط دون السجل التاريخي القديم.
- للمراجعة
- 03 Default Branch Checkout تفعيل الفرع الافتراضي
- الخطوة التلقائية في نهاية الاستنساخ التي تملأ مجلد العمل بملفات الفرع الرئيسي للمستودع البعيد.
- للمراجعة
- 04 Target Directory Argument معامل المجلد الوجهة
- مسار اختياري يُمرر بعد عنوان المستودع في أمر git clone لتحديد اسم المجلد المحلي الجديد.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 ZIP ZIP
- Zone Information Protocol Archive
- صيغة ملفات مضغوطة تفقد مجلد .git وسجل الالتزامات عند تنزيلها يدوياً من المتصفح.
- للمراجعة
- 02 CI CI
- Continuous Integration
- بيئات التكامل المستمر الآلية التي تعتمد على النسخ الخفيف لتسريع فحص الكود.
- للمراجعة
- 03 URL URL
- Uniform Resource Locator
- العنوان الشبكي للمستودع البعيد الذي يُمرر لأمر الاستنساخ.
- للمراجعة
- 04 HEAD HEAD
- Current Branch Pointer
- المؤشر الذي يحدد الفرع الافتراضي المفعّل تلقائياً عقب اكتمال الاستنساخ.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب أمر git clone الذي ينسخ المستودع السحابي داخل مجلد محلي مخصص باسم my-portal ثم افحص الرابط بـ git remote -v.
-
استخدم تبويبات المختبر التفاعلي للمقارنة بين الاستنساخ الكامل واختيار الفرع بـ -b والنسخ الخفيف بـ --depth 1.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي10 أسئلة تنتظرك +
لماذا يتفوق تنفيذ الأمر "git clone" على تنزيل ملف "Download ZIP" من GitHub؟
لأن git clone ينزّل قاعدة بيانات .git كاملة مع سجل الالتزامات ويضبط الرابط origin تلقائياً.
أي أمر يستنسخ المستودع السحابي داخل مجلد محلي مخصص باسم "portal"؟
تمرير اسم المجلد كمعامل أخير بعد الرابط يحدد اسم المجلد المحلي الجديد.
ما اللقب المختصر الذي يضبطه الأمر "git clone" تلقائياً لعنوان المستودع المصدر؟
يسجل الأمر git clone عنوان المستودع المنسوخ تلقائياً تحت اللقب القياسي origin.
يجب دائماً تنفيذ الأمر "git init" قبل تشغيل الأمر "git clone".
خطأ؛ فالأمر git clone ينشئ المجلد ويهيئ بداخله مجلد .git تلقائياً دون الحاجة إلى git init.
أي خيار يُمرر مع "git clone" لتفعيل فرع محدد مثل "develop" فور انتهاء الاستنساخ؟
يُستخدم الخيار -b متبوعاً باسم الفرع لتفعيله مباشرة عند الاستنساخ.
ماذا يحقق تنفيذ الأمر "git clone --depth 1 <url>"؟
ينفذ نسخاً خفيفاً يجلب أحدث التزام فقط دون تنزيل السجل التاريخي القديم بالكامل.
يُستخدم النسخ الخفيف (--depth 1) على نطاق واسع في خطوط البناء الآلي CI/CD لتوفير الوقت وعرض النطاق.
صواب؛ لأن خوادم الاختبار الآلي تحتاج غالباً إلى أحدث نسخة من الكود فقط دون التاريخ القديم.
بعد استنساخ المستودع والدخول لمجلده، أي أمر يتحقق من عناوين الرابط البعيد المسجلة تلقائياً؟
يعرض الأمر git remote -v رابطَي الجلب والرفع اللذين تم ضبطهما تلقائياً للقب origin.
متى يجب عليك استخدام الأمر "git init" بدلاً من الأمر "git clone"؟
يُستخدم git init عند إنشاء مشروع محلي جديد تماماً من الصفر لم يسبق استضافته.
يعمل الأمر git clone بنجاح مع كل من روابط HTTPS وروابط SSH.
صواب؛ إذ يقبل الأمر git clone الاستنساخ عبر بروتوكول HTTPS أو بروتوكول SSH.