في هذا الدرس 6تصفّح المواضيع
للبدء في تتبع مشروع برمجي موجود على جهازك، انتقل إلى مجلد المشروع عبر الطرفية ثم نفّذ الأمر git init. يحوّل هذا الأمر المجلد العادي فوراً إلى مستودع Git محلي جاهز للعمل:
- عملية آمنة على ملفاتك الحالية: لا يمس الأمر
git initملفات الكود الموجودة في المجلد ولا يغير محتواها إطلاقاً. - إنشاء المجلد المخفي
.git: ينشئ النظام مجلداً فرعياً مخفياً باسم.gitيضم الهيكل الأساسي لقاعدة بيانات المستودع.
mkdir my-website
cd my-website
git init
# Initialized empty Git repository in .../my-website/.git/
بدلاً من إنشاء المجلد أولاً بالأمر mkdir ثم الدخول إليه، يتيح لك الأمر git init <directory> إنشاء مجلد جديد وتهيئته كمستودع Git في خطوة واحدة مختصرة:
- إنشاء وتهيئة فورية: تنفيذ
git init closetag-uiينشئ المجلدclosetag-uiتلقائياً ويبني بداخله مجلد.gitالمخفي. - اختصار الخطوات: بعد انتهاء الأمر مباشرة، انتقل إلى داخل المجلد عبر
cd closetag-uiلبدء كتابة ملفات مشروعك.
# Create folder "closetag-ui" and initialize .git in one step
git init closetag-ui
cd closetag-ui
ls -la
يتيح لك الأمر git init تحديد اسم الفرع الابتدائي صراحةً لحظة إنشاء المستودع عبر الخيار -b أو الصيغة المطولة --initial-branch:
- الخيار المختصر (
-b main): تنفيذgit init -b mainيوجه مؤشرHEADنحو الفرعmainمنذ اللحظة الأولى. - الخيار المطول (
--initial-branch=main): صيغة واضحة شائعة الاستخدام في سكريبتات إعداد المشاريع الآلية.
ماذا يحدث لو نفذت الأمر git init مرة ثانية داخل مستودع مهيأ مسبقاً؟ وما خطورة تنفيذه داخل مجلد فرعي لمستودع قائم؟
- إعادة التنفيذ في نفس الجذر: عملية آمنة تماماً؛ إذ يطبع النظام رسالة
Reinitialized existing Git repositoryدون أن يمسح أي لقطة أو فرع سابق. - تحذير تداخل المستودعات (Nested Repositories): تجنب تماماً تشغيل
git initداخل مجلد فرعي (مثلsrc/) تابع لمشروع يحتوي أصلاً على مستودع في جذره، لأن ذلك يسبب تعارضاً في تتبع الملفات الفرعية.
# Safe reinitialization in the same root folder:
git init
# Quiet mode (-q) suppresses informational output:
git init -q clean-service
يقارن الجدول المرجعي التالي بين صيغ وخيارات الأمر git init قبل الانتقال إلى فحص حالة الملفات بالأمر git status في الدرس السادس:
| العملية | مثال الصياغة | السلوك والنتيجة |
|---|---|---|
| تهيئة المجلد الحالي | git init | إنشاء المجلد المخفي .git داخل المجلد المفتوح حالياً |
| إنشاء وتهيئة مجلد جديد | git init my-app | إنشاء المجلد my-app وتهيئة المستودع بداخله مباشرة |
| تحديد اسم الفرع الابتدائي | git init -b main | ضبط مؤشر الرأس HEAD ليشير إلى الفرع main |
| التهيئة الصامتة | git init -q | تنفيذ التهيئة بدون طباعة رسائل إعلامية في الطرفية |
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تعلمت في هذا الدرس إنشاء مستودع محلي جديد بالأمر git init في المجلد الحالي أو في مجلد جديد بخطوة واحدة، وتحديد الفرع -b main، وتشريح محتويات المجلد المخفي .git، وتجنب تداخل المستودعات. الخطوة التالية: انتقل الآن إلى الدرس رقم 6 «فحص حالة الملفات عبر الأمر git status» لقراءة تقارير حالة المستودع.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Repository Initialization تهيئة المستودع
- تنفيذ الأمر git init لإنشاء مجلد .git المخفي وتحويل مجلد المشروع العادي إلى مستودع Git محلي.
- للمراجعة
- 02 Hidden .git Directory المجلد المخفي .git
- المجلد المخفي في جذر المشروع والذي يضم قاعدة بيانات الكائنات ومؤشرات الفروع وإعدادات المستودع.
- للمراجعة
- 03 Initial Branch Flag خيار الفرع الابتدائي
- الخيار -b الممرر مع git init لتحديد اسم الفرع الأول للمستودع مثل main.
- للمراجعة
- 04 Nested Repository Trap خطأ تداخل المستودعات
- الخطأ الناتج عن تشغيل git init داخل مجلد فرعي يقع ضمن مشروع يحتوي أصلاً على مستودع في جذره.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 HEAD HEAD
- Active Branch Reference File
- الملف النصي .git/HEAD الذي يحفظ الإشارة المرجعية للفرع المفتوح حالياً.
- للمراجعة
- 02 REFS REFS
- Git References Directory
- مجلد المراجع داخل .git الذي يخزن مؤشرات الفروع والوسوم.
- للمراجعة
- 03 INIT INIT
- Initialize Repository Subcommand
- الأمر الفرعي في Git المخصص لإنشاء مستودع جديد أو إعادة تهيئته.
- للمراجعة
- 04 ROOT ROOT
- Top-Level Project Directory
- المجلد الأعلى للمشروع البرمجي الذي ينبغي أن يستقر فيه مجلد .git الوحيد.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
استخدم تبويبات المختبر التفاعلي لمقارنة تهيئة مجلد حالي وإنشاء مجلد جديد وفحص مكونات .git.
-
أنشئ مجلداً تجريبياً ونفّذ git init -b main ثم اعرض محتوى ملف .git/HEAD.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ماذا يفعل تنفيذ الأمر git init داخل مجلد مشروع قائم؟
ينشئ مجلداً فرعياً مخفياً باسم .git يضم بنية المستودع دون المساس بملفات المشروع الموجودة.
ما الأمر الذي ينشئ مجلداً جديداً باسم store-app ويهيئ بداخله مستودع Git في خطوة واحدة؟
تمرير اسم المجلد بعد الأمر git init ينشئ المجلد ويهيئ بداخله مستودع Git مباشرة.
ما الخيار الذي يحدد اسم الفرع الابتدائي ليكون main صراحةً عند تشغيل الأمر git init؟
يُستخدم الخيار -b main لتحديد اسم الفرع الابتدائي عند إنشاء المستودع.
يقوم تنفيذ الأمر git init بتجهيز وحفظ جميع الملفات الموجودة في المجلد تلقائياً في لقطة أولى.
خطأ؛ فالأمر git init ينشئ هيكل المستودع الفارغ فقط وتظل الملفات غير متتبعة حتى يتم تجهيزها وحفظها.
داخل المجلد المخفي .git، أي ملف يحفظ الإشارة المرجعية للفرع النشط حالياً مثل ref: refs/heads/main؟
يحفظ الملف .git/HEAD المرجع الرمزي الذي يشير إلى الفرع النشط حالياً.
إعادة تنفيذ الأمر git init داخل جذر مستودع مهيأ مسبقاً عملية آمنة ولا تمسح سجل الالتزامات.
صواب؛ إذ يعيد النظام تهيئة القوالب بأمان دون المساس بالكائنات أو السجل المحفوظ.
لماذا يجب تجنب تشغيل الأمر git init داخل مجلد فرعي (مثل src/) تابع لمشروع يحتوي أصلاً على مستودع Git؟
لأنه ينشئ مستودعاً فرعياً متداخلاً يمنع المستودع الرئيسي في جذر المشروع من تتبع ملفات ذلك المجلد بشكل طبيعي.
أي خيار يجعل الأمر git init يعمل بالوضع الصامت دون طباعة رسائل إعلامية إلا عند حدوث خطأ؟
يكتم الخيار -q (أو --quiet) الرسائل الإعلامية العادية أثناء التهيئة.