Git وGitHub / الأساسي: نموذج Git المحلي / الدرس 1
مستودعات Git واللقطات وGitHub
ابنِ نموذجاً محلياً دقيقاً قبل استخدام منصة استضافة أو مشاركة التغييرات.
في هذه الصفحة
أهداف الدرس
- ميّز كائنات Git ومراجعه من ميزات تعاون GitHub.
- أنشئ مستودعاً مؤقتاً معزولاً وافحصه.
افصل نظام الإصدارات عن الخدمة
Git نظام موزع يسجل تاريخ المشروع محلياً. يستضيف GitHub المستودعات ويضيف طلبات الدمج والمراجعات والمشكلات والتحكم بالوصول والأتمتة. لا يظهر الإيداع المحلي تلقائياً على GitHub، ولا يزيل حذف فرع محلي الفرع المستضاف بالضرورة. يمكن تعلم معظم الآليات دون شبكة. تعامل مع المنصة كطبقة تعاون بصلاحياتها وسياساتها؛ فهذا يفسر رفض الخادم أمراً محلياً صحيحاً بسبب قاعدة أو تفويض.
فكّر باللقطات والعلاقات
يشير الإيداع إلى لقطة عبر شجرة ويسجل بيانات وصفية وعلاقات آباء. تحفظ محتويات الملفات ككائنات blob والمجلدات بأشجار. الفروع مراجع متحركة للإيداعات والتاريخ رسم موجه بلا دورات. يعرض Git فرقاً لكنه لا يخزن الإيداع كقائمة تعديلات أسطر فقط. تعتمد المعرّفات على المحتوى والبيانات وصيغة الكائنات، فلا تفترض طول بصمة واحداً لكل تثبيت. يفسر النموذج سهولة التفريع وتغير الهوية عند إعادة الكتابة.
ابدأ داخل مجلد مختبر قابل للاستبدال
تنتمي أوامر الدورة لمستودعات مؤقتة معزولة. ينشئ الإعداد مجلداً جديداً وفرع main ولا يربط بعيداً أو يعدل مشروعاً قائماً. يتطلب خيار الفرع الأول Git 2.28 أو أحدث، وظهرت switch وrestore في 2.23. راجع الدليل المثبت عند غياب خيار. تفترض الأمثلة صدفة POSIX؛ يستخدم Windows بيئة Git Bash أو يترجم أوامر الملفات بعناية. تحقق من المسار قبل أي إعداد.
lab_dir=$(mktemp -d)
cd "$lab_dir"
git init --initial-branch=main
git rev-parse --show-toplevel
يطبع الأمر الأخير المسار المطلق المتغير بين الآلات. لا يوجد بعيد أو إيداع بعد. المقتطف غير قابل للتشغيل في العارض وتستخدم الاختبارات العملية مجلداً مؤقتاً مداراً منفصلاً.
اجعل الهوية ونطاق الإعداد صريحين
هوية المؤلف بيانات وصفية لا مصادقة؛ لا تثبت الاسم والبريد ملكية حساب أو حق الدفع. تأتي الإعدادات من النظام والعام والمستودع والأمر؛ افحص المصدر عند السلوك المفاجئ. استخدم هوية اصطناعية بنطاق الأمر للمختبر لا تغيير الملف العام. تجنب طباعة الاعتمادات أو تضمين الرموز بالرابط. تؤثر الإعدادات في نهايات الأسطر والتوقيع والخطافات والدمج؛ يسجل المختبر الافتراضات بدلاً من وراثة إعداد مجهول.
printf 'A local notebook\n' > notes.txt
git add -- notes.txt
git -c user.name="Lab Author" -c user.email="lab@example.invalid" commit -m "Create notebook"
git rev-list --count HEAD
ينفذ بعد إعداد المختبر فقط. العدد النهائي 1 لوجود إيداع واحد قابل للوصول. يتضمن الملخص معرّفاً مولداً لا نتنبأ به. لا يتغير إعداد عام أو مشروع فعلي.
تحقق من النموذج قبل المشاركة
استخدم status لحالة الملفات وlog للإيداعات ومراجع الفروع للاسم الحالي. قد يحتوي المستودع كائنات لا يصلها فرع، وقد يكون الفرع قبل أول إيداع بحالة لم تولد بعد. لا تعتبر وجود إيداع محلي نسخة احتياطية. النسخ والبعيد واسترداد الوصول مسؤوليات منفصلة. اعتد تحديد المكان والمرجع والعمل غير المودع قبل تحريك التاريخ أو الملفات.
الأخطاء الشائعة وإصلاحها
لا يظهر الإيداع المحلي على GitHub
- لماذا يحدث؟
- اختلط التاريخ المحلي بالمزامنة المستضافة.
- كيف تصلحه؟
- افحص المراجع وسير المشاركة دون افتراض رفع آلي.
- كيف تتجنب تكراره؟
- ميّز مسؤوليات الإيداع والجلب والدفع.
تستخدم الإيداعات مؤلفاً غير متوقع
- لماذا يحدث؟
- جاءت الهوية من نطاق إعداد موروث.
- كيف تصلحه؟
- افحص مصادر الإعداد واستخدم نطاق الأمر الاصطناعي.
- كيف تتجنب تكراره؟
- تحقق من المؤلف قبل النشر.
يغيب خيار في الدرس عن التثبيت
- لماذا يحدث؟
- يسبق إصدار Git الواجهة.
- كيف تصلحه؟
- افحص git --version ودليل الأمر المثبت.
- كيف تتجنب تكراره؟
- سجل إصدار المختبر وافتراضات الصدفة.
اختبر فهمك
1. اشرح لماذا لا يثبت بريد الإيداع حق المؤلف بالدفع.
اعرض الحل المشروح
تخزن الهوية بالإيداع وتقيّم الخدمة المصادقة والتفويض منفصلين. يضيف التوقيع ادعاء هوية قابلاً للتحقق وفق سياسة ولا يمنح حق الكتابة.
2. يشير فرع لإيداع. هل يكرر إنشاء فرع آخر كل ملف؟
اعرض الحل المشروح
لا؛ الفرع مرجع آخر للرسم ويمكن مشاركة اللقطات والمحتوى. تحرك الإيداعات التالية الفرع الجاري وتبقى المراجع الأخرى عند إيداعاتها.
أهم ما تعلمته
- يسجل Git الكائنات والمراجع محلياً ويضيف GitHub التعاون.
- بيانات الإيداع وسلطة البعيد منفصلتان.
- استخدم مختبرات معزولة وافحص الحالة قبل تغييرها.