الوحدة الأولى: مقدمة في Git و GitHub
أهلاً بك في بداية رحلتك. في هذه الوحدة، سنغوص في فلسفة Git، ولماذا يعتبر نظاماً "موزعاً" (Distributed)، وكيفية إعداده باحترافية تامة.
1. ما هو نظام التحكم في الإصدارات؟ (لماذا نحتاجه؟)
تخيل أنك تعمل في فريق يضم 10 مبرمجين. بدون نظام تحكم في الإصدارات، ستضطر لإرسال قطع الكود عبر البريد الإلكتروني ودمجها يدوياً في ملف واحد. هذه وصفة كارثية للفشل.
نظام التحكم في الإصدارات (VCS) يسمح لك بـ:
- تتبع السجل (History): كل تغيير هو عبارة عن "لقطة" (Snapshot).
- التراجع: إذا تعطل الموقع، يمكنك العودة لنسخة ما قبل 5 دقائق بأمر واحد فقط.
- التعاون: العمل على نفس الملف دون أن يمسح أحدكم عمل الآخر.
التطور: الأنظمة المركزية مقابل الأنظمة الموزعة (DVCS)
- الطريقة القديمة (SVN/CVS): يوجد خادم مركزي واحد. إذا تعطل، لا يمكن لأحد حفظ عمله. يجب أن تكون متصلاً بالإنترنت لتقوم بحفظ التغييرات.
- طريقة Git (الموزعة): كل مبرمج يمتلك نسخة كاملة من تاريخ المشروع بالكامل على جهازه الخاص.
2. Git و GitHub: الاتصال السحابي
- Git: الأداة التي تعمل برمجياً على جهازك. هي من تدير تاريخ ملفاتك محلياً.
- GitHub: خدمة استضافة سحابية لمستودعات Git. هي من توفر الميزات "الاجتماعية": طلبات السحب (PRs)، تتبع المشكلات (Issues)، وواجهة الويب.
TIP
نصيحة للمحترفين: هناك بدائل لـ GitHub مثل GitLab و Bitbucket، لكن جميعها تستخدم Git في جوهرها. بمجرد تعلمك لـ Git، يمكنك استخدام أي منها.
3. طرق الاتصال: HTTPS مقابل SSH (شرح معمق)
لنقل الكود بين جهازك و GitHub، تحتاج لإنشاء "نفق آمن". هناك طريقتان رئيسيتان لذلك:
| الخاصية | HTTPS | SSH (Secure Shell) |
|---|---|---|
| صيغة الرابط | https://github.com/user/repo.git | git@github.com:user/repo.git |
| طريقة التحقق | تطلب اسم المستخدم + رمز الوصول الشخصي (PAT) | تستخدم "زوج مفاتيح" مخزن على جهازك |
| السهولة | سهلة الإعداد؛ تعمل في كل مكان | تستغرق 5 دقائق للإعداد؛ لا تطلب كلمة مرور أبداً |
| خلف الكواليس | بروتوكول الويب العادي (Port 443) | نفق مشفر (Port 22) |
الخيار أ: الاتصال عبر HTTPS
هذه هي الطريقة "التقليدية". عندما تقوم بـ git push سيسألك GitHub عن بياناتك.
IMPORTANT
منذ عام 2021، لم يعد GitHub يقبل كلمة مرورك العادية عند استخدام HTTPS. يجب عليك إنشاء رمز وصول شخصي (Personal Access Token - PAT) من إعدادات حسابك على GitHub.
الخيار ب: الاتصال عبر SSH (طريقة المحترفين)
باستخدام SSH، يتبادل جهازك و GitHub "مصافحة سرية" للتعرف على بعضهما.
كيف يعمل؟
- المفتاح الخاص (Private Key): يبقى على جهازك (مثل المفتاح الحقيقي).
- المفتاح العام (Public Key): ترفعه على GitHub (مثل القفل). عندما تتصل، يستخدم Git مفتاحك الخاص لإثبات هويتك، ويقوم GitHub بالتحقق من ذلك باستخدام المفتاح العام.
خطوات إعداد SSH:
# 1. إنشاء مفتاح جديد (اضغط Enter للموافقة على كل الخيارات الافتراضية)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 2. نسخ المفتاح العام
cat ~/.ssh/id_ed25519.pub
# 3. إضافته لـ GitHub:
# اذهب إلى GitHub Settings > SSH and GPG keys > New SSH Key
# قم بلصق المفتاح واحفظ!4. التثبيت والإعداد الاحترافي
قم بتشغيل هذه الأوامر مرة واحدة على جهازك:
# 1. أساسي: هويتك البرمجية
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 2. مفيد: تسمية الفرع الرئيسي الافتراضي
git config --global init.defaultBranch main
# 3. بصري: تلوين مخرجات واجهة الأوامر
git config --global color.ui auto5. مجلد .git: الدماغ المحرك
عندما تبدأ مشروعاً، ينشئ Git مجلداً مخفياً باسم .git.
CAUTION
إذا قمت بحذف هذا المجلد، سيظل مشروعك موجوداً، لكن كل تاريخك، وفروعك، وإصداراتك السابقة ستختفي للأبد.
ماذا بعد؟
في الوحدة القادمة، سنبدأ العمل العملي مع سير العمل الأساسي وكيف ترفع أول مشروع لك على GitHub!