الدليل الشامل لتعلم Git و GitHub من الصفر للمبتدئين: خطوة بخطوة مع أمثلة عملية
ابدأ رحلتك في عالم التحكم بالإصدارات! تعلم Git و GitHub من الصفر للمبتدئين مع شرح مبسط لأهم الأوامر، الفروع، الدمج، والتعاون على المشاريع. دليل شامل باللغة العربية يغنيك عن أي مصادر أخرى.
لماذا يجب عليك تعلم Git و GitHub؟
إذا كنت قد بدأت للتو في كتابة الأكواد البرمجية، فمن المحتمل أنك واجهت مشكلة حفظ نسخ متعددة من مشروعك بأسماء مثل "project_final" و "project_final_v2" و "project_really_final". هذه الطريقة العشوائية تؤدي حتماً إلى الفوضى وفقدان الملفات المهمة. هنا يأتي دور Git و GitHub كأدوات لا غنى عنها لأي مطور برمجيات في العصر الحديث.
في هذا الدليل الشامل، والمصمم خصيصاً للبحث عن "تعلم Git و GitHub من الصفر للمبتدئين"، سنأخذك في رحلة ممتعة وتطبيقية خطوة بخطوة. لن نكتفي بسرد الأوامر الجافة، بل سنشرح "السبب" وراء كل أمر وكيفية استخدامه في سيناريوهات واقعية.
- الفهم العميق: ستدرك الفرق الجوهري بين Git كنظام محلي و GitHub كمنصة سحابية.
- التطبيق العملي: ستتعلم كيفية تثبيت الأدوات، إنشاء المستودعات، حفظ التغييرات، والعمل مع الفروع (Branches).
- التعاون السحابي: سنشرح كيفية رفع مشاريعك إلى GitHub وسحب التعديلات وحل التعارضات (Merge Conflicts).
- مشروع متكامل: سنختتم دليلك بمشروع عملي يطبق كافة الأوامر التي تعلمتها لترسيخ المعلومات.
مقدمة ضرورية: فهم Git و GitHub
قبل أن نغوص في كتابة الأوامر البرمجية (Terminal Commands)، من الضروري جداً أن نبني أساساً نظرياً متيناً. الكثير من المبتدئين يخلطون بين Git و GitHub، معتقدين أنهما شيء واحد. دعونا نوضح الصورة.
ما هو Git ولماذا هو أساسي؟
Git (جيت) هو نظام تحكم بالإصدارات موزع (Distributed Version Control System) مجاني ومفتوح المصدر، تم إنشاؤه بواسطة "لينوس تورفالدس" (مبتكر نظام لينكس) في عام 2005. ببساطة، يمكنك تخيل Git على أنه "آلة زمن" لملفات مشروعك.
يقوم Git بتتبع كل تغيير تقوم به في الكود الخاص بك محلياً على جهاز الكمبيوتر الخاص بك. إذا قمت بحذف سطر مهم عن طريق الخطأ، أو أضفت ميزة جديدة أدت إلى تعطل البرنامج بأكمله، يسمح لك Git بالعودة إلى نسخة سابقة ومستقرة بضغطة زر واحدة. إنه يحميك من فقدان عملك ويوفر لك سجلاً تاريخياً دقيقاً لكل تعديل (من قام به، متى، ولماذا).
ما هو GitHub ودوره في التعاون؟
GitHub (جيت هاب) هو موقع ويب ومنصة استضافة سحابية تعتمد على نظام Git. إذا كان Git هو الأداة التي تعمل على جهازك، فإن GitHub هو المكان الذي ترفع إليه هذه المشاريع لتخزينها على الإنترنت (السحابة).
يوفر GitHub واجهة رسومية جميلة وميزات اجتماعية تجعل التعاون بين المبرمجين أمراً سهلاً. من خلاله، يمكن لفريق من المطورين حول العالم العمل على نفس المشروع في نفس الوقت دون أن يتداخل عمل أحدهم مع الآخر. كما أنه يعتبر بمثابة السيرة الذاتية العملية لأي مبرمج، حيث يعرض مشاريعك وإسهاماتك للشركات وأصحاب العمل.
الفرق الجوهري بين Git و GitHub
لتوضيح الفكرة بشكل نهائي، إليك هذا التشبيه البسيط: تخيل أن Git هو الكاميرا التي تلتقط بها الصور (تعديلات الكود) وتحتفظ بها على هاتفك. أما GitHub فهو منصة إنستغرام حيث تقوم برفع تلك الصور ليراها الآخرون ويتفاعلوا معها. يمكنك استخدام Git بدون GitHub (الاحتفاظ بالصور على هاتفك فقط)، لكن لا يمكنك استخدام GitHub بدون Git!
البدء: تثبيت Git وإعداد GitHub
الآن وبعد أن فهمنا المفاهيم الأساسية، حان وقت العمل الفعلي. سنقوم بتجهيز بيئة العمل الخاصة بك خطوة بخطوة.
أولاً: تحميل وتثبيت Git على جهازك
عملية التثبيت تختلف قليلاً حسب نظام التشغيل الخاص بك. اتبع الخطوات التالية:
لمستخدمي Windows:
- توجه إلى الموقع الرسمي: git-scm.com/downloads
- قم بتحميل نسخة Windows (عادةً 64-bit).
- افتح ملف التثبيت المُنزل، واضغط على "Next" في جميع النوافذ (الإعدادات الافتراضية ممتازة للمبتدئين).
- بعد الانتهاء، ابحث في قائمة ابدأ عن برنامج يسمى Git Bash، وهو موجه الأوامر الذي سنستخدمه.
لمستخدمي Mac:
- أسهل طريقة هي فتح تطبيق الـ Terminal وكتابة الأمر:
git --version. إذا لم يكن مثبتاً، سيقترح عليك نظام الماك تثبيت أدوات المطورين (Command Line Tools) التي تتضمن Git. - بديلاً عن ذلك، يمكنك تحميله من الموقع الرسمي كملف تثبيت عادي.
للتحقق من نجاح التثبيت (لجميع الأنظمة):
افتح موجه الأوامر (Git Bash في الويندوز، أو Terminal في الماك/لينكس) واكتب الأمر التالي:
إذا ظهر لك رقم الإصدار (مثل `git version 2.40.0`)، فهذا يعني أن التثبيت قد تم بنجاح!
ثانياً: إنشاء حسابك الخاص على GitHub
امتلاك حساب على GitHub أمر مجاني وبسيط للغاية:
- اذهب إلى موقع github.com.
- انقر على زر Sign up في أعلى اليمين.
- أدخل بريدك الإلكتروني، اختر كلمة مرور قوية، واسم مستخدم فريد (يُفضل أن يكون اسمك الحقيقي أو اسماً احترافياً لأن الشركات ستراه).
- قم بحل لغز التحقق (Captcha) وأكمل التسجيل.
- لا تنسَ الذهاب إلى بريدك الإلكتروني لتأكيد الحساب عبر الرابط المرسل من GitHub.
ثالثاً: إعداد Git لأول مرة (التهيئة الأولية)
الآن بعد أن أصبح Git مثبتاً على جهازك، يجب أن تخبره بـ "هويتك". عندما تقوم بحفظ تعديلات على كود برمجي، يرفق Git اسمك وبريدك الإلكتروني مع هذا التعديل ليعرف الجميع من قام به. هذه الخطوة تُفعل مرة واحدة فقط على جهازك.
افتح موجه الأوامر (Terminal أو Git Bash) واكتب الأوامر التالية (استبدل البيانات ببياناتك الحقيقية، ويُفضل استخدام نفس البريد الذي سجلت به في GitHub):
git config --global user.name "Your Name"
# لتعيين بريدك الإلكتروني
git config --global user.email "your.email@example.com"
للتأكد من أن الإعدادات تم حفظها بشكل صحيح، يمكنك كتابة الأمر التالي لعرض قائمة بإعداداتك:
أساسيات Git: التحكم بالإصدارات محلياً (أهم الأوامر)
هذا هو جوهر الموضوع! في هذا القسم، سنتعلم كيف نستخدم Git داخل مجلد مشروعنا على الكمبيوتر الشخصي. سنفترض أن لديك مجلداً يحتوي على ملفات مشروعك (مثلاً مجلد اسمه `my-website`).
1. تهيئة مستودع Git جديد (`git init`)
بشكل افتراضي، مجلداتك العادية لا يتم تتبعها بواسطة Git. لتحويل مجلد عادي إلى مستودع Git (Repository أو Repo)، يجب عليك استخدام موجه الأوامر للانتقال إلى مسار المجلد، ثم تشغيل أمر التهيئة.
ماذا يفعل هذا الأمر؟ يقوم بإنشاء مجلد مخفي باسم .git داخل مشروعك. هذا المجلد المخفي هو عقل النظام، حيث يخزن Git جميع التغييرات، السجلات، والفروع. تحذير: لا تقم بحذف أو تعديل هذا المجلد المخفي يدوياً أبداً!
فهم مناطق Git الثلاث (مفهوم حيوي جداً)
قبل كتابة المزيد من الأوامر، يجب أن تفهم كيف يفكر Git. تمر ملفاتك في Git بثلاث مراحل أو مناطق رئيسية:
- منطقة العمل (Working Directory): هي المجلد الفعلي الذي ترى فيه ملفاتك وتقوم بتعديلها في محرر الأكواد (مثل VS Code).
- منطقة التجهيز (Staging Area): منطقة وسيطة افتراضية. عندما تقوم بتعديل ملفات، يجب أن "تضيفها" إلى هذه المنطقة أولاً لإخبار Git: "أنا مستعد لحفظ هذه الملفات تحديداً في النسخة القادمة".
- المستودع (Repository): هو قاعدة بيانات Git. عندما تقوم بـ "حفظ" (Commit) الملفات الموجودة في منطقة التجهيز، تنتقل بشكل دائم إلى المستودع كنسخة آمنة يمكنك الرجوع إليها لاحقاً.
2. تتبع حالة الملفات (`git status`)
هذا هو الأمر الأكثر استخداماً على الإطلاق. إنه يخبرك بحالة مشروعك الحالية: ما هي الملفات التي تم تعديلها؟ ما هي الملفات الموجودة في منطقة التجهيز؟ وما هي الملفات الجديدة التي لا يتتبعها Git بعد؟
نصيحة: استخدم هذا الأمر باستمرار قبل وبعد أي عملية للتأكد من أنك تسير على الطريق الصحيح. الملفات باللون الأحمر تعني أنها لم تُضف لمنطقة التجهيز، والملفات باللون الأخضر تعني أنها جاهزة للحفظ.
3. إضافة الملفات لمنطقة التجهيز (`git add`)
لنفترض أنك أنشأت ملفاً جديداً باسم index.html. لن يقوم Git بحفظه تلقائياً. يجب عليك إضافته إلى منطقة التجهيز (Staging Area) باستخدام أمر add.
git add index.html
# لإضافة جميع الملفات المعدلة والجديدة في المشروع دفعة واحدة (الطريقة الأكثر شيوعاً)
git add .
النقطة . تعني "كل شيء في هذا المجلد والمجلدات الفرعية".
4. حفظ التغييرات بشكل دائم (`git commit`)
الآن وبعد أن أصبحت ملفاتك في منطقة التجهيز (خضراء عند كتابة git status)، حان الوقت لأخذ "لقطة" (Snapshot) لها وحفظها في المستودع. هذه العملية تسمى Commit.
يجب أن ترفق مع كل عملية حفظ "رسالة" تصف ما قمت بفعله. هذه الرسالة مهمة جداً لك ولزملائك في المستقبل لفهم تاريخ التعديلات.
حرف -m يرمز إلى Message (رسالة). تأكد من كتابة رسائل واضحة ومختصرة تعبر عن التغيير الفعلي.
5. مراجعة سجل التغييرات (`git log`)
كيف يمكنك رؤية جميع التعديلات (Commits) السابقة التي قمت بها؟ هنا يأتي دور أمر السجل.
سيعرض لك هذا الأمر قائمة بكل عملية حفظ، متضمنة: معرف فريد (Hash) طويل، اسم المؤلف، التاريخ، ورسالة الحفظ. للخروج من هذه الشاشة، اضغط على حرف q في لوحة المفاتيح.
6. تجاهل الملفات غير المرغوب فيها (`.gitignore`)
في أي مشروع برمجي، هناك ملفات لا تريد رفعها أو تتبعها بواسطة Git، مثل: ملفات النظام المخفية، كلمات المرور ومفاتيح الـ API، أو المجلدات الضخمة التي يتم إنشاؤها تلقائياً مثل node_modules.
لحل هذه المشكلة، نقوم بإنشاء ملف نصي داخل مجلد المشروع ونسميه بالضبط .gitignore (لاحظ النقطة في البداية). داخل هذا الملف، نكتب أسماء الملفات أو المجلدات التي نريد من Git أن يتجاهلها تماماً.
node_modules/
.env
*.log
فروع Git (Branches): العمل المتوازي والتعاون الفعال
تعتبر ميزة الفروع (Branches) من أقوى وأهم ميزات Git. تخيل الفرع على أنه "بيئة عمل معزولة". عندما تنشئ مستودعاً جديداً، يضعك Git افتراضياً على الفرع الرئيسي والذي يسمى عادةً main أو master. هذا الفرع يجب أن يحتوي دائماً على الكود النظيف والمستقر.
إذا أردت إضافة ميزة جديدة للمشروع (مثلاً: إضافة سلة مشتريات للموقع) أو تجربة كود جديد دون المخاطرة بتخريب الفرع الرئيسي، يجب عليك إنشاء "فرع جديد".
1. إنشاء وعرض الفروع (`git branch`)
لمعرفة الفروع الموجودة في مشروعك حالياً، اكتب:
لإنشاء فرع جديد باسم cart-feature (ميزة السلة)، نستخدم نفس الأمر متبوعاً باسم الفرع:
ملاحظة: هذا الأمر ينشئ الفرع فقط، ولكنه لا ينقلك إليه.
2. التنقل بين الفروع (`git checkout` أو `git switch`)
للانتقال والعمل على الفرع الجديد الذي قمنا بإنشائه، نستخدم أمر checkout (أو الأمر الأحدث switch):
# أو باستخدام الأمر الحديث:
git switch cart-feature
الآن، أي تعديل أو `commit` تقوم به سيُحفظ في هذا الفرع المعزول ولن يؤثر على الفرع الرئيسي main.
نصيحة للمحترفين: يمكنك إنشاء فرع والانتقال إليه في خطوة واحدة باستخدام: git checkout -b branch-name.
3. دمج الفروع (`git merge`)
لنفترض أنك أنهيت العمل على ميزة السلة في فرع cart-feature وأصبح الكود يعمل بشكل ممتاز. الآن تريد نقل هذه التعديلات وإضافتها إلى الفرع الرئيسي main. هذه العملية تسمى الدمج (Merge).
خطوات الدمج الصحيحة:
- أولاً، يجب أن تنتقل إلى الفرع المُستقبِل (الفرع الذي تريد دمج الكود إليه، وهو هنا
main):
git checkout main - ثانياً، قم بتنفيذ أمر الدمج متبوعاً باسم الفرع الذي تريد جلبه:
git merge cart-feature
بعد الدمج الناجح، يمكنك حذف الفرع القديم لأنه لم يعد له حاجة باستخدام الأمر: git branch -d cart-feature.
4. كابوس المبتدئين: حل تعارضات الدمج (Merge Conflicts)
ماذا لو قمت بتعديل السطر رقم 10 في ملف index.html في الفرع الرئيسي، وفي نفس الوقت قام زميلك بتعديل نفس السطر رقم 10 في فرع آخر؟ عند محاولة دمج الفرعين، لن يعرف Git أي التعديلين يجب أن يحتفظ به! هنا يحدث ما يسمى بـ التعارض (Conflict).
عند حدوث تعارض، سيتوقف Git عن الدمج ويخبرك أن هناك ملفات تحتاج إلى تدخلك اليدوي. إذا فتحت الملف المتعارض في محرر الأكواد (مثل VS Code)، سترى علامات غريبة أضافها Git تبدو هكذا:
<h1>مرحباً بكم في موقعنا الجديد</h1> (هذا هو الكود الموجود في فرعك الحالي)
=======
<h1>أهلاً بك في متجرنا</h1> (هذا هو الكود القادم من الفرع الآخر)
>>>>>>> cart-feature
كيف تحل المشكلة؟ ببساطة، احذف العلامات التي أضافها Git (<<<<<<< و ======= و >>>>>>>)، واختر الكود الذي تريد الاحتفاظ به (أو ادمج الكودين معاً برمجياً). بعد ذلك، احفظ الملف، وقم بتنفيذ أمري git add . و git commit لإنهاء عملية الدمج.
Git و GitHub معاً: مشاركة المشاريع والتعاون السحابي
حتى الآن، كل عملنا كان محلياً على جهاز الكمبيوتر. ماذا لو تعطل جهازك؟ ستفقد كل شيء! لذلك، يجب أن نرفع مستودعنا المحلي إلى منصة GitHub ليكون آمناً ومتاحاً للتعاون.
1. إنشاء مستودع بعيد (Remote Repository) على GitHub
- سجل الدخول لحسابك في GitHub.
- اضغط على علامة + في أعلى اليمين واختر New repository.
- اكتب اسماً للمستودع (مثلاً
my-first-website). - اختر ما إذا كان عاماً (Public - يراه الجميع) أو خاصاً (Private - تراه أنت فقط).
- مهم جداً: لا تقم بتحديد خيار "Add a README file" إذا كان لديك مشروع محلي بالفعل تريد رفعه. اترك المستودع فارغاً تماماً.
- اضغط على Create repository.
سيقوم GitHub بنقلك لصفحة تحتوي على رابط المستودع (يبدأ بـ https://github.com/...) وبعض الأوامر الجاهزة.
2. ربط المشروع المحلي بـ GitHub ورفع الكود (`git push`)
الآن سنخبر Git على جهازك بوجود هذا المستودع السحابي الجديد. انسخ الرابط الذي أعطاك إياه GitHub ونفذ الأمر التالي في موجه الأوامر:
git remote add origin https://github.com/YourUsername/my-first-website.git
# رفع الكود لأول مرة وتعيين الفرع الافتراضي
git push -u origin main
أمر Push هو الذي يقوم فعلياً برفع ملفاتك وسجل التعديلات إلى السحابة. في المرات القادمة، سيكفي أن تكتب git push فقط لرفع التعديلات الجديدة.
3. استنساخ مستودع موجود (`git clone`)
ماذا لو انضممت لشركة ولديهم مشروع موجود بالفعل على GitHub وتريد تحميله على جهازك للعمل عليه؟ هنا نستخدم أمر الاستنساخ.
هذا الأمر يقوم بتحميل المشروع بالكامل مع كافة ملفاته وسجلاته (مجلد .git) إلى جهازك، ويكون جاهزاً للعمل مباشرة.
4. سحب التعديلات الجديدة (`git pull`)
إذا كنت تعمل مع فريق، فمن المؤكد أن زملائك يقومون برفع تعديلاتهم (Push) إلى GitHub بشكل مستمر. لكي تحصل على هذه التعديلات الجديدة وتدمجها مع نسختك المحلية على جهازك، يجب عليك سحبها باستخدام:
من أفضل الممارسات دائماً أن تقوم بعمل git pull قبل أن تبدأ العمل كل يوم، لتتأكد أنك تعمل على أحدث نسخة من الكود.
تطبيق عملي متكامل واستخدام المحررات
دعونا نلخص كل ما تعلمناه في سيناريو عملي كامل، ونتعرف على كيفية تسهيل الأمور باستخدام برامج تحرير الأكواد.
مشروعك الأول: الخطوات المتسلسلة
إليك الدورة الكاملة (Workflow) التي ستستخدمها يومياً:
git init(لمرة واحدة فقط في بداية المشروع)- اكتب الكود الخاص بك وقم بتعديل الملفات.
git status(لمعرفة الملفات المعدلة)git add .(لتجهيز التعديلات)git commit -m "update"(لحفظ التعديلات محلياً)git push origin main(لرفعها إلى GitHub)
استخدام Git مع Visual Studio Code
رغم أهمية تعلم الأوامر النصية، إلا أن المحررات مثل VS Code تجعل الأمر أسهل بصرياً:
- يحتوي VS Code على أيقونة Source Control (تشبه التفرع) في الشريط الجانبي.
- يمكنك رؤية الملفات المعدلة، وبضغطة زر (علامة +) تقوم بعمل Add.
- يوجد مربع نصي لكتابة رسالة الـ Commit ثم الضغط على الزر لحفظها.
- أداة دمج التعارضات (Merge Conflict) في VS Code توفر أزراراً سريعة مثل "Accept Current Change" أو "Accept Incoming Change" مما يسهل حل المشاكل.
حل المشاكل الشائعة للمبتدئين في Git و GitHub
كمبتدئ، من الطبيعي جداً أن تواجه بعض الأخطاء. إليك أشهرها وكيفية حلها:
مشكلة: خطأ المصادقة (Authentication Failed) عند الرفع
السبب والحل: أوقفت GitHub استخدام كلمات المرور العادية لرفع الكود لأسباب أمنية. يجب عليك استخدام Personal Access Token (PAT). اذهب إلى إعدادات حسابك في GitHub -> Developer settings -> Personal access tokens، وقم بإنشاء توكن جديد (Classic)، وانسخه. عندما يطلب منك Git كلمة المرور في موجه الأوامر، الصق هذا التوكن بدلاً من كلمة مرورك العادية.
مشكلة: خطأ "Updates were rejected because the remote contains work that you do not have locally"
السبب والحل: هذا الخطأ يظهر عند محاولة عمل `git push` بينما يحتوي المستودع على GitHub على تعديلات ليست موجودة على جهازك (مثلاً قمت بتعديل ملف مباشرة من موقع GitHub). الحل البسيط هو سحب التعديلات أولاً عن طريق كتابة git pull origin main، ثم حاول الرفع مرة أخرى git push origin main.
مشكلة: قمت بحفظ Commit في الفرع الخطأ!
السبب والحل: إذا قمت بعمل commit وأدركت أنك على الفرع الرئيسي `main` بدلاً من فرع الميزة، يمكنك التراجع عن الـ commit الأخير (مع الاحتفاظ بتعديلاتك في الملفات) باستخدام الأمر: git reset HEAD~1. بعد ذلك، قم بإنشاء الفرع الصحيح والانتقال إليه، ثم أعد عملية الـ commit.
قاموس مصطلحات سريع (عربي - إنجليزي)
المستودع (Repository / Repo): المجلد الذي يحتوي على مشروعك وملفات تتبع Git.
الحفظ (Commit): أخذ لقطة وتسجيل التعديلات بشكل دائم في تاريخ المشروع.
الفرع (Branch): مسار عمل مستقل لتطوير ميزات جديدة دون التأثير على الكود الأساسي.
الدمج (Merge): جمع التعديلات من فرع وإضافتها لفرع آخر.
طلب السحب (Pull Request / PR): طلب تقدمه لمدير المشروع لمراجعة كودك (في فرعك) قبل دمجه في الفرع الرئيسي على GitHub.
الخطوة التالية في رحلتك البرمجية
تعلم Git و GitHub هو مهارة تراكمية، لا تتوقع أن تحفظ جميع الأوامر من اليوم الأول. الممارسة هي المفتاح! ابدأ بإنشاء مستودع بسيط، قم بعمل بعض التعديلات، وجرب الفروع. كل خطأ تقع فيه وتصلحه هو خطوة نحو الاحتراف. شارك مشاريعك على GitHub وابدأ في بناء معرض أعمالك البرمجي اليوم.
