Git وGitHub للمبتدئين: دليل عملي من أول أمر حتى نشر مشروعك

لو سألت أي مبرمج محترف عن أول أداة يجب أن يتعلمها المبتدئ بعد لغته الأولى لقال لك: Git. هي نظام يحفظ تاريخ مشروعك كاملًا، فتستطيع العودة لأي نسخة سابقة، وتجرب أفكارًا جديدة دون خوف من تخريب ما يعمل، وتتعاون مع غيرك دون أن يمسح أحدكم عمل الآخر. وGitHub هو المنصة التي تستضيف مشاريع Git على الإنترنت وتعرض أعمالك للعالم، وتعتبر عمليًا سيرتك الذاتية كمبرمج.
في هذا الدليل نمر على كل ما تحتاجه عمليًا: من التثبيت إلى أول Commit، ثم الفروع والـPull Request، وحل التعارضات، وأخطاء المبتدئين.
لماذا نحتاج Git أصلًا؟
بدون Git ينتهي الأمر بمجلدات مثل: final وfinal2 وfinal-نهائي-جديد. المشاكل واضحة: لا تعرف أي نسخة الأحدث، ولا ما الذي تغير، ولا كيف تعود لنسخة كانت تعمل. Git يحل ذلك بأن يحفظ «لقطات» (Commits) لمشروعك مع رسالة تشرح كل تغيير، بحيث ترى التاريخ وتقارن وتعود.
فوائد عملية أخرى:
- أمان: كل تغيير محفوظ، ولا يضيع عمل بحذف خاطئ.
- تجريب بلا خوف: افتح فرعًا جديدًا، جرّب، وإن فشلت الفكرة احذفه.
- عمل جماعي: عدة أشخاص على المشروع نفسه بدمج منظم.
- معرض أعمال: GitHub يعرض مشاريعك وتاريخ نشاطك لأصحاب العمل والعملاء.
- نشر آلي: منصات الاستضافة الحديثة تنشر موقعك تلقائيًا عند كل تحديث.
Git وGitHub: ما الفرق؟
- Git: برنامج على جهازك يتتبع التغييرات. يعمل بدون إنترنت.
- GitHub: خدمة سحابية تخزن نسخة من مشروعك وتضيف أدوات التعاون (Issues وPull Requests وActions). وهناك بدائل مثل GitLab وBitbucket لكن الأفكار نفسها.
الإعداد الأول
ثبّت Git من الموقع الرسمي (توثيق Git) ثم اضبط هويتك مرة واحدة:
git config --global user.name "اسمك"
git config --global user.email "you@example.com"
git config --global init.defaultBranch mainأنشئ حسابًا على GitHub ويفضل تفعيل التحقق بخطوتين. للاتصال الآمن استخدم مفاتيح SSH أو أداة GitHub CLI بدل كتابة كلمة المرور في كل مرة (راجع توثيق GitHub).
دورة العمل الأساسية
افترض أن لديك مجلد مشروع جديد:
git init # إنشاء مستودع محلي
git status # ماذا تغير؟
git add . # تجهيز كل التغييرات للحفظ
git commit -m "إضافة الصفحة الرئيسية" # حفظ لقطة
git log --oneline # عرض التاريخالمناطق الثلاث
افهم هذا المفهوم وستفهم Git:
- مجلد العمل (Working Directory): ملفاتك كما هي الآن.
- منطقة التجهيز (Staging Area): ما اخترت حفظه في اللقطة القادمة بـ
git add. - المستودع (Repository): اللقطات المحفوظة بـ
git commit.
لماذا منطقة تجهيز؟ لأنها تسمح باختيار ما يدخل كل Commit، فتجعل اللقطة ذات معنى واحد (مثلًا: إصلاح زر، دون خلطه بتعديل لون).
رسائل Commit جيدة
- اكتب بصيغة واضحة تصف التغيير: «إصلاح حساب الضريبة في السلة».
- تجنب «تعديلات» و«fix» و«asdf».
- لقطة واحدة لفكرة واحدة.
ربط المشروع بـGitHub
أنشئ مستودعًا فارغًا على GitHub ثم:
git remote add origin https://github.com/USERNAME/my-project.git
git branch -M main
git push -u origin mainبعدها تكتفي بـgit push لرفع جديدك، وgit pull لجلب ما أضافه غيرك. وإن أردت نسخ مشروع موجود: git clone <الرابط>.
الفروع (Branches): سر الأمان
الفرع نسخة موازية من المشروع تعمل عليها دون المساس بالرئيسية.
git switch -c feature/contact-form # إنشاء فرع جديد والانتقال إليه
# ... تعدّل وتحفظ Commits ...
git switch main
git merge feature/contact-form # دمج الفرع في الرئيسي
git branch -d feature/contact-form # حذفه بعد الدمجقاعدة ذهبية: الفرع main يجب أن يبقى دائمًا في حالة تعمل. كل ميزة أو إصلاح في فرع مستقل.
Pull Request: التعاون والمراجعة
عند العمل في فريق (أو حتى وحدك للانضباط) ترفع فرعك إلى GitHub وتفتح Pull Request يطلب دمجه في main. يراجع زميلك التغييرات ويعلق عليها، وتعمل الاختبارات الآلية، ثم يُدمج. فوائده: اكتشاف أخطاء مبكرًا، وتوثيق لماذا تغير الكود، وتبادل المعرفة.
حل تعارضات الدمج
يحدث التعارض حين يعدل شخصان السطر نفسه. يضع Git علامات في الملف:
<<<<<<< HEAD
<h1>أهلًا</h1>
=======
<h1>مرحبًا</h1>
>>>>>>> feature/titleاختر النسخة الصحيحة (أو ادمجهما)، واحذف العلامات، ثم git add وgit commit. لا تخف: التعارض أمر طبيعي وليس خطأ.
ملف .gitignore: ما لا يجب رفعه
ضع فيه ما لا تريد تتبعه:
node_modules/
.env
*.log
dist/
.DS_Storeالأهم: لا ترفع أبدًا كلمات مرور ومفاتيح API (ملفات .env) إلى مستودع عام. إن حدث ذلك فاعتبر المفتاح مسرّبًا وغيّره فورًا؛ حذفه من آخر نسخة لا يكفي لأنه يبقى في التاريخ. وللمزيد عن الحماية راجع قائمة أمان المواقع.
أوامر إنقاذ مفيدة
| الموقف | الأمر |
|---|---|
| إلغاء تعديل لم يُجهّز في ملف | git restore file.txt |
| إلغاء التجهيز | git restore --staged file.txt |
| تعديل رسالة آخر Commit | git commit --amend |
| التراجع عن Commit بأمان بإنشاء آخر عكسي | git revert <hash> |
| حفظ عملك مؤقتًا دون Commit | git stash ثم git stash pop |
| رؤية من غيّر هذا السطر | git blame file.txt |
تحذير: أوامر مثل git reset --hard وgit push --force قد تضيّع عملًا. لا تستخدمها قبل أن تفهمها، ولا تستخدم --force على فرع يشاركه غيرك.
أفضل الممارسات
- Commits صغيرة متكررة بدل لقطة ضخمة في آخر اليوم.
- اسحب قبل أن تدفع (
git pull) لتقلل التعارضات. - اسم فرع واضح:
feature/وfix/وdocs/. - ملف README يوضح المشروع وطريقة تشغيله، وهو أول ما يراه الزائر. وتأكد من أن كودك مقروء (ممارسات الكود النظيف).
- استخدم GitHub Pages أو Netlify لنشر مواقعك الثابتة مجانًا مباشرة من المستودع. وللخطوات الكاملة إنشاء موقع خطوة بخطوة.
- فعّل GitHub Actions لاختبار الكود ونشره تلقائيًا عند كل تحديث (GitHub Actions).
كيف تبني بروفايل GitHub يلفت الأنظار؟
- صورة واسم واضحان ونبذة قصيرة.
- تثبيت (Pin) أفضل 4 إلى 6 مشاريع.
- لكل مشروع README بصور شاشة ورابط تجربة مباشر.
- نشاط منتظم ولو بسيط.
- مشاركات صغيرة في مشاريع مفتوحة المصدر (إصلاح خطأ إملائي في توثيق يبدأ الطريق).
وتذكر أن صاحب العمل أو العميل يريد أن يرى جودة الكود وتنظيمه ورسائل الـCommits، لا عدد النجوم. وهذه أعمال حقيقية تنفذ بنفس هذا الأسلوب يمكنك مشاهدتها في معرض الأعمال.
أخطاء شائعة للمبتدئين
- عدم الحفظ إلا مرة واحدة في نهاية المشروع.
- رفع
node_modulesأو ملفات ضخمة. - رفع الأسرار كمفاتيح API.
- العمل مباشرة على
mainدون فروع. - الخوف من Git وتجنب الأوامر؛ جرّب في مشروع تجريبي أولًا.
- استخدام واجهة رسومية فقط دون فهم الأوامر. الواجهات مفيدة لكن افهم الأساس.
أسئلة شائعة
- Git يتتبع التاريخ على جهازك، وGitHub يستضيفه ويعرض عملك ويتيح التعاون.
- دورة العمل: add ثم commit ثم push، مع فرع لكل ميزة.
- لا ترفع الأسرار، واستخدم
.gitignoreمنذ اللحظة الأولى. - بروفايل GitHub منظم هو أقوى سيرة ذاتية لمبرمج مبتدئ.
أسئلة شائعة
هل Git صعب للمبتدئين؟
الأوامر الأساسية خمسة أو ستة فقط (init وadd وcommit وpush وpull وswitch). تتقنها في أسبوع بالتطبيق.
هل GitHub مجاني؟
نعم للمستودعات العامة والخاصة بخصائص أساسية، وهناك خطط مدفوعة لميزات الفرق الكبيرة.
ما الفرق بين merge وrebase؟
merge يدمج الفروع مع إبقاء التاريخ كما هو، وrebase يعيد ترتيب Commits لتاريخ خطي أنظف. ابدأ بـmerge.
ماذا أفعل إن رفعت كلمة مرور بالخطأ؟
غيّر كلمة المرور أو المفتاح فورًا، فحذفه من آخر نسخة لا يمحو التاريخ.
هل أستخدم Git لمشاريعي الصغيرة؟
نعم. هو عادة تلازمك مدى الحياة وتحميك حتى في أصغر مشروع.
خدمة مرتبطة: تصميم وبرمجة المواقع
تحتاج تنفيذ هذا الموضوع لمشروعك؟ احكيلي عن فكرتك واحصل على عرض سعر مجاني خلال 24 ساعة.
اعرف المزيد ←اقرأ أيضاً
كيف تتعلم البرمجة من الصفر؟ خارطة طريق عملية للمبتدئين
خارطة طريق لتعلم البرمجة من الصفر: اختيار المسار، أساسيات المنطق، أول مشروع، الأدوات، أخطاء المبتدئين، وجدول 6 أشهر للوصول إلى مستوى يؤهلك لأول فرصة عمل.
الكود النظيف: 12 ممارسة تجعل برنامجك سهل الفهم والصيانة
ممارسات الكود النظيف بأمثلة قبل وبعد: التسمية، الدوال الصغيرة، تجنب التكرار، التعليقات، معالجة الأخطاء، الاختبارات، المراجعة.
كيف تبني موقعًا إلكترونيًا من الصفر: 10 خطوات من الفكرة حتى الإطلاق
دليل كامل لإنشاء موقع إلكتروني: تحديد الهدف، اختيار النوع والتقنية، الدومين والاستضافة، التصميم، المحتوى، السيو، الاختبار، الإطلاق، والمتابعة.
أمان المواقع الإلكترونية: قائمة تدقيق من 20 نقطة تحمي موقعك وعملاءك
قائمة عملية لحماية موقعك: HTTPS، التحديثات، كلمات المرور، النسخ الاحتياطي، جدار الحماية، رؤوس الأمان وCSP، حماية النماذج وقواعد البيانات، رصد الاختراق.