هل سبق لك أن وجدت نفسك غارقًا في بحر من الملفات التي تحمل أسماءً مثل FinalProject_v2.zip، FinalProject_v3_Final.zip، ثم FinalProject_ForReal_ThisTime_FINAL.zip؟ إنها الفوضى التي يعرفها كل مبرمج ومصمم وصانع محتوى. ماذا لو كان هناك زر "تراجع" سحري ليس فقط لآخر كلمة كتبتها، بل لآخر أسبوع كامل من العمل؟ ماذا لو استطعت أنت وفريقك العمل على نفس المشروع من قارات مختلفة دون أن يمحو أحدكم عمل الآخر عن طريق الخطأ؟
هذه ليست أمنيات، بل هي الواقع اليومي لملايين المطورين المحترفين حول العالم. مرحبًا بك في عالم Git و GitHub. قد تبدو هذه الأسماء تقنية ومعقدة، لكنها في جوهرها أدوات بسيطة تمنحك قوة خارقة: التحكم الكامل في تاريخ مشاريعك والتعاون بثقة وسلاسة.
هذا المقال ليس مجرد شرح تقني، بل هو رحلتك المتكاملة. إذا كنت تبحث عن دليل شامل عن git و github للمبتدئين، فقد وصلت إلى وجهتك الصحيحة. سنأخذ بيدك من نقطة الصفر، ونفكك كل مفهوم معقد إلى أفكار بسيطة، ونبني مشروعًا حقيقيًا معًا، ونختتم بتعريفك على مساعدك البرمجي الذي يعمل بالذكاء الاصطناعي. بنهاية هذا الدليل، لن تتعلم فقط ما هو git، بل ستكتسب المهارة التي تفرق بين المطور الهاوي والمحترف.
لماذا Git و GitHub هما القوة الخارقة التي يحتاجها كل مطور؟
قبل أن نتعمق في الأوامر والنوافذ، من الضروري أن نفهم "السبب". لماذا أحدثت هذه الأدوات ثورة في عالم تطوير البرمجيات؟ الإجابة تكمن في حلها لمشكلتين أساسيتين: تتبع التغييرات، وتنظيم التعاون.
ما هو نظام التحكم في الإصدارات (Version Control System)؟
تخيل أنك ترسم لوحة فنية. في كل مرة تضيف فيها لونًا جديدًا أو تعدل جزءًا منها، تلتقط صورة للوحة. بعد شهر، يصبح لديك ألبوم كامل يوثق كل مرحلة من مراحل تطور اللوحة. إذا قررت في أي لحظة أن اللون الذي أضفته بالأمس لم يكن جيدًا، يمكنك ببساطة العودة إلى الصورة التي التقطتها قبله ومتابعة العمل من هناك.
هذا هو بالضبط نظام التحكم في الإصدارات (VCS). Git هو أشهر وأقوى نظام من هذا النوع. إنه لا يحفظ نسخًا متعددة من ملفاتك، بل يسجل "التغييرات" التي تطرأ عليها بمرور الوقت كنقاط زمنية أو "لقطات" يمكنك العودة إليها في أي وقت. هذا يعني وداعًا للفوضى ومرحبًا بالسكينة التنظيمية.
إذًا، ما الفرق بين git و github؟
هذا هو السؤال الأكثر شيوعًا بين المبتدئين. من المهم جدًا فهم الفرق بين git و github لتتضح الصورة كاملة.
- Git: هو الأداة، هو المحرك. إنه برنامج يعمل على حاسوبك المحلي (Local) ويتولى كل مهام تتبع التغييرات وحفظ السجل التاريخي لمشروعك. يمكنك استخدام Git بالكامل دون الحاجة للاتصال بالإنترنت.
- GitHub: هو المنصة، هو الخدمة السحابية. تخيله كنادي اجتماعي فاخر أو معرض فني لمشاريع Git الخاصة بك. GitHub يوفر لك مكانًا على الإنترنت (يُسمى المستودع البعيد أو Remote Repository) لتخزين نسخ من مشاريعك. هذا يتيح لك:
- النسخ الاحتياطي: حفظ نسخة آمنة من مشروعك بعيدًا عن جهازك.
- التعاون: دعوة مطورين آخرين للمساهمة في مشروعك ورؤية تغييراتهم ودمجها بسهولة.
- عرض الأعمال: بناء ملف شخصي احترافي يعرض مهاراتك ومشاريعك للعالم، وهو بمثابة سيرتك الذاتية التقنية.
باختصار: Git هو نظام التحكم بالإصدارات، بينما GitHub هو منصة لاستضافة مستودعات Git وتسهيل التعاون حولها. تعلم git و github للمبتدئين يعني تعلم الأداة والمنصة معًا.
تثبيت وإعداد Git: تجهيز معملك للمستقبل
قبل أن نكتب أي أمر، نحتاج إلى تثبيت git على أجهزتنا. إنها عملية مباشرة وبسيطة على جميع أنظمة التشغيل.
على نظام ويندوز (Windows):
- اذهب إلى الموقع الرسمي Git for Windows.
- سيقوم الموقع تلقائيًا بتنزيل المثبت المناسب لنظامك (32-bit أو 64-bit).
- شغل الملف الذي تم تنزيله. ستظهر لك شاشة الإعدادات. لا تقلق من كثرة الخيارات، ببساطة اضغط على "Next" في كل الخطوات باستخدام الإعدادات الافتراضية. فهي ممتازة للمبتدئين.
- بعد انتهاء التثبيت، افتح قائمة "ابدأ" وابحث عن "Git Bash". إذا فتحت معك نافذة سوداء شبيهة بسطر الأوامر، فهذا يعني أن عملية التثبيت تمت بنجاح.
على نظام ماك (macOS):
- أسهل طريقة هي عبر Homebrew. افتح الـ Terminal واكتب الأمر التالي: brew install git
- إذا لم يكن لديك Homebrew، يمكنك تنزيل المثبت الرسمي مباشرة من هنا.
على نظام لينكس (Linux - Debian/Ubuntu):
افتح الـ Terminal ونفذ الأمر التالي:
sudo apt-get update
sudo apt-get install git
الخطوة الأهم: التعريف بهويتك
بعد تثبيت git، هناك خطوة واحدة أخيرة بالغة الأهمية. يجب أن تخبر Git من أنت، لأن كل "لقطة" (Commit) تسجلها يجب أن تحمل اسمك وبريدك الإلكتروني. افتح Git Bash (في ويندوز) أو الـ Terminal (في ماك ولينكس) ونفذ الأمرين التاليين، مع استبدال البيانات ببياناتك الشخصية:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
هذه الخطوة تُجرى مرة واحدة فقط. الآن، معمل التطوير الخاص بك جاهز للانطلاق!
فك شفرة المفاهيم الأساسية: من مساحة العمل إلى الـ Commit
لفهم Git بعمق، يجب أن نستوعب ثلاث مراحل أساسية يمر بها أي ملف في مشروعك. تخيل أنك تقوم بالتسوق من متجر كبير:
- مساحة العمل (Working Directory): هذا هو المتجر نفسه. إنه مجلد مشروعك على حاسوبك حيث تقوم بإضافة، تعديل، وحذف الملفات. هنا تقوم بكل عملك اليومي.
- منطقة التجهيز (Staging Area): هذه هي "عربة التسوق". عندما تقوم بتعديل ملف وتعتقد أنه جاهز للحفظ، فأنت لا تحفظه مباشرة. أولاً، تضعه في عربة التسوق. هذه المنطقة تسمح لك بتجميع مجموعة من التغييرات من ملفات مختلفة معًا قبل حفظها دفعة واحدة. لوضع ملف في منطقة التجهيز، نستخدم الأمر git add.
- المستودع المحلي (Local Repository): هذا هو "صندوق الدفع والخروج". عندما تكون راضيًا عن كل ما في عربة التسوق، تذهب إلى صندوق الدفع لحفظ مشترياتك بشكل دائم. في عالم Git، هذه العملية تسمى "Commit"، وهي تقوم بأخذ لقطة دائمة من كل الملفات الموجودة في منطقة التجهيز وتخزينها في المستودع المحلي الخاص بك (مجلد .git مخفي داخل مشروعك). لعمل ذلك، نستخدم الأمر git commit.
أوامر git الأساسية التي تحرك هذه العملية:
- git status: يعرض حالة مشروعك. يخبرك بالملفات التي تم تعديلها، والملفات الموجودة في منطقة التجهيز، وأي معلومات أخرى مهمة. إنه صديقك المفضل.
- git add <file-name>: يضيف ملفًا معينًا إلى منطقة التجهيز. يمكنك استخدام git add . لإضافة كل التغييرات الحالية.
- git commit -m "Your descriptive message": يقوم بأخذ لقطة (Commit) من كل ما هو موجود في منطقة التجهيز، مع رسالة تصف التغيير الذي قمت به. كتابة رسائل واضحة ومفيدة هو فن بحد ذاته. هذا هو شرح git commit ببساطة.
بهذا الفهم، أنت الآن جاهز لأول رحلة عملية لك.
رحلتك الأولى: رفع مشروعك بالكامل خطوة بخطوة
النظرية مهمة، لكن التطبيق هو ما يثبت المعلومة. هيا بنا نقوم بإنشاء ورفع مشروع على github.
الخطوة 1: إنشاء المشروع المحلي
- افتح سطح المكتب أو أي مكان تفضله وأنشئ مجلدًا جديدًا باسم My-First-Project.
- ادخل إلى هذا المجلد. بداخله، أنشئ ملفًا بسيطًا اسمه index.html وضع فيه الكود التالي، وإذا كانت هذه هي المرة الأولى التي تتعامل فيها مع هذه الملفات، فمن المفيد أن تلقي نظرة على [دليل تعلم HTML و CSS] لتفهم أساسياتها:
<!DOCTYPE html>
<html>
<head>
<title>My First Project</title>
</head>
<body>
<h1>Hello, Git and GitHub World!</h1>
</body>
</html>
- افتح Git Bash أو الـ Terminal.
- انتقل إلى مجلد مشروعك باستخدام أمر cd. مثال: cd Desktop/My-First-Project.
- الآن، نفذ الأمر السحري الذي يبدأ كل شيء: git init
- اكتب git status. سيخبرك Git بوجود ملف جديد index.html غير مُتتبع (untracked).
- لنضعه في منطقة التجهيز (عربة التسوق): git add index.html
- الآن، لنحفظ هذه اللقطة بشكل دائم في مستودعنا المحلي: git commit -m "Initial commit: Create index.html file"
- اذهب إلى موقع GitHub وسجل الدخول.
- في الزاوية العلوية اليمنى، اضغط على علامة + واختر "New repository".
- أعطِ المستودع اسمًا، وليكن My-First-Project.
- يمكنك إضافة وصف اختياري.
- اتركه "Public" (عام) حاليًا.
- اضغط على زر "Create repository".
سيمنحك GitHub صفحة بها بعض الأوامر. نحن مهتمون بالقسم الذي يقول: "...or push an existing repository from the command line".
-
انسخ السطر الأول الذي يبدأ بـ
git remote add origin...
، والصقه في الـ Terminal. هذا الأمر يُخبر مستودعك المحلي بعنوان مستودعك البعيد على GitHub:
git remote add origin https://github.com/YOUR_USERNAME/My-First-Project.git
- (اختياري، لكن موصى به) غيّر اسم الفرع الرئيسي من master إلى main ليتوافق مع المعايير الحديثة:
git branch -M main
- أخيرًا، الأمر الذي يُرسل عملك إلى العالم:
git push -u origin main
سيطلب منك تسجيل الدخول إلى GitHub. بعد ذلك، شاهد السحر يحدث! إذا قمت بتحديث صفحة المستودع على GitHub، ستجد ملف index.html
هناك.
لقد نجحت في رفع مشروع على GitHub!
فن التعاون الاحترافي: الفروع وطلبات السحب (Branches & Pull Requests)
حتى الآن، كل عملنا كان على خط زمني واحد يسمى الفرع الرئيسي (main). ولكن ماذا لو أردت تجربة ميزة جديدة دون المخاطرة بإفساد النسخة المستقرة من مشروعك؟ هنا يأتي دور الفروع (Branches).
شرح git branch: العمل في أكوان متوازية
الفرع هو نسخة طبق الأصل من مشروعك في لحظة إنشائه. يمكنك العمل على هذا الفرع، إضافة commits، وحتى ارتكاب أخطاء فادحة، وكل هذا لن يؤثر على الفرع main الأصلي.
لنجرب سيناريو عملي:
- لإنشاء فرع جديد باسم update-style والانتقال إليه، نفّذ الأمر: git checkout -b update-style
- افتح ملف
index.html
وأضف بعض التنسيق:
<!DOCTYPE html>
<html>
<head>
<title>My First Project</title>
<style>
body { font-family: sans-serif; background-color: #f0f0f0; }
h1 { color: #333; }
</style>
</head>
<body>
<h1>Hello, Git and GitHub World!</h1>
<p>This is my first project on GitHub.</p>
</body>
</html>
1. الآن، قم بحفظ هذه التغييرات في فرعك الجديد:
2. ادفع هذا الفرع الجديد إلى GitHub:
git push origin update-style
شرح Pull Request: طلب الإذن بالدمج
الآن لديك فرعان على GitHub: main
و update-style
. أنت تريد دمج التغييرات الجميلة من update-style
إلى main
. في المشاريع التعاونية، لا تقوم بالدمج مباشرة. بدلاً من ذلك، تفتح "طلب سحب" (Pull Request).
الـ Pull Request هو طلب رسمي لمراجعة الكود الذي كتبته ودمجه. إنه قلب التعاون في GitHub.
- اذهب إلى مستودعك على GitHub، ستلاحظ ظهور شريط أصفر يقترح عليك إنشاء Pull Request لفرع
update-style
. اضغط على الزر الأخضر. - اكتب عنوانًا ووصفًا لطلب السحب الخاص بك، موضحًا ما قمت به.
- اضغط "Create pull request".
- في صفحة الـ Pull Request، يمكنك رؤية التغييرات التي قمت بها بالضبط. في مشروع حقيقي، سيقوم مديرك أو زميلك بمراجعة الكود هنا. بما أن هذا مشروعك، يمكنك المراجعة بنفسك.
- إذا كان كل شيء على ما يرام، اضغط على زر "Merge pull request"، ثم "Confirm merge".
تهانينا! لقد قمت بدمج تغييراتك بنجاح. يمكنك الآن حذف الفرع update-style
بأمان. عملك الآن منظم، احترافي، وموثق بالكامل.
لحظة! ماذا لو فشل الأمر push؟ حل أشهر خطأ يواجه المبتدئين
بينما تتبع الخطوات بحماس، قد يظهر لك فجأة خطأ أحمر مرعب بعد تنفيذ أمر git push، وهو الخطأ الذي واجهناه معًا:
أولاً، تنفس بعمق. هذا ليس خطأك، بل هو أشهر وأهم درس عملي ستتعلمه في Git. ظهور هذا الخطأ يعني أنك بدأت تفهم كيف يفكر Git حقًا.
ما هو سبب المشكلة الحقيقي؟
السبب ببساطة هو وجود "تاريخين مختلفين" للمشروع. تخيل أنك كتبت الفصل الأول من كتابك على جهازك (هذا هو أول commit محلي). وفي نفس الوقت، عندما أنشأت المستودع على GitHub، قمت بوضع علامة صح على خيار "Add a README file". هذا الإجراء قام بإنشاء "تاريخ" آخر للكتاب مباشرة على موقع GitHub.الآن، عندما تحاول رفع عملك (push)، ينظر Git ويقول: "انتظر! لدي تاريخين مختلفين لهذا المشروع لا أعرف كيف أربطهما معًا. أنا أرفض المتابعة حتى لا أسبب فوضى."
كيف تحل المشكلة؟ (حلول حقيقية)
هناك طريقتان لحل هذه المشكلة، طريقة للمحترفين، وطريقة أسهل للمبتدئين. 1. الحل الأول (الأسهل والموصى به للمبتدئين): البداية النظيفة
إذا كنت في بداية مشروعك، فإن أسهل حل وأكثره أمانًا هو حذف كل شيء والبدء من جديد بطريقة صحيحة 100%.
- احذف المستودع على GitHub: اذهب إلى صفحة المستودع على الموقع، ثم "Settings"، وانزل إلى أسفل الصفحة، واختر "Delete this repository".
- أنشئ مستودعًا جديدًا: أنشئ مستودعًا آخر بنفس الاسم، ولكن هذه المرة تأكد من عدم وضع علامة صح على أي خيار إضافي (لا README، لا gitignore). يجب أن يكون المستودع فارغًا تمامًا.
- أعد ربط ورفع المشروع: من سطر الأوامر على جهازك (من داخل مجلد مشروعك)، نفذ أوامر الربط والرفع مرة أخرى:
git remote add origin [رابط المستودع الجديد]
git push -u origin main
بهذه الطريقة، تضمن أن "التاريخ" الأول للمشروع يبدأ من جهازك أنت، وسيقبله GitHub بسلاسة.
2. الحل الثاني (التقني): دمج التواريخ غير المرتبطة
إذا كنت قد قطعت شوطًا في مشروعك ولا تريد حذفه، يمكنك إجبار Git على سحب الملفات من GitHub ودمج التاريخين المختلفين.
نفذ هذا الأمر في سطر الأوامر:
git pull origin main --allow-unrelated-histories
هذا الأمر يخبر Git: "أنا أعلم أن هناك تاريخين مختلفين، تجاهل ذلك، واسحب التغييرات من GitHub وادمجها مع عملي المحلي."
بعد نجاح عملية السحب والدمج، يمكنك الآن تنفيذ أمر الرفع مرة أخرى، وسيعمل بنجاح:
git push -u origin main
GitHub Copilot: مساعدك الذكي الذي يكتب الكود معك
تخيل أن بجانبك مبرمجًا خبيرًا يهمس لك بالحلول أثناء كتابتك للكود. هذا هو GitHub Copilot، وهو امتداد للمحررات البرمجية تم تطويره بواسطة GitHub وOpenAI. إنه يستخدم الذكاء الاصطناعي لاقتراح أسطر كاملة من الكود، أو حتى دوال كاملة، بناءً على سياق ما تكتبه.شرح GitHub Copilot وكيفية استخدامه:
- الاشتراك والتثبيت: يتطلب Copilot اشتراكًا (غالبًا ما يكون مجانيًا للطلاب والمساهمين في المشاريع المفتوحة المصدر). بعد الاشتراك، قم بتثبيت الامتداد (Extension) الخاص به في محرر الأكواد المفضل لديك، مثل VS Code.
- التفعيل: بمجرد التثبيت، قم بتسجيل الدخول إلى حساب GitHub الخاص بك من داخل المحرر لتفعيل Copilot.
- الاستخدام: الأمر بسيط للغاية. ابدأ في كتابة الكود أو اكتب تعليقًا يصف ما تريد القيام به.
مثال عملي:
في ملف جافاسكريبت، اكتب التعليق التالي:
// Function to validate an email address
بمجرد أن تضغط Enter، ستجد أن GitHub Copilot يقترح عليك دالة كاملة وجاهزة للتحقق من صحة البريد الإلكتروني. يمكنك قبول الاقتراح بالضغط على مفتاح Tab.
هذه الأداة توفّر ساعات من البحث والكتابة المتكررة، وتُعتبر إضافة هائلة لأي مطور يسعى لزيادة إنتاجيته. إن تعلّم Git وGitHub للمبتدئين في العصر الحالي يجب أن يشمل معرفة هذه الأدوات المساعدة.
صناعة هويتك الرقمية: بناء ملف GitHub احترافي يجذب الأنظار
ملفك الشخصي على GitHub ليس مجرد مكان لتخزين الكود؛ إنه سيرتك الذاتية الحية، وهو حجر الأساس في [بناء معرض أعمالك التقني]، وبوابتك للحصول على وظيفة أحلامك. إليك بعض النصائح لبناء ملف شخصي مميز:- خصّص ملف README لملفك الشخصي: يمكنك إنشاء مستودع خاص يحمل نفس اسم المستخدم الخاص بك. إضافة ملف
README.md
إلى هذا المستودع سيؤدي إلى عرضه بشكل بارز على صفحتك الشخصية. استخدمه للتعريف بنفسك، مهاراتك، وما تعمل عليه حاليًا. - ثبّت أفضل أعمالك (Pin Repositories): يتيح لك GitHub تثبيت ما يصل إلى 6 مستودعات في أعلى صفحتك. اختر أفضل مشاريعك وأكثرها إثارة للإعجاب، وتأكد من أن لكل منها ملف README جيد يشرح المشروع وكيفية تشغيله.
- اجعل مساهماتك خضراء: يظهر على صفحتك "مخطط المساهمات" (Contribution Graph) الذي يتلوّن بالأخضر كل يوم تقوم فيه بـ commit. يوضح هذا المخطط مدى نشاطك والتزامك. اجعل من العادة أن تقوم بـ commit كل يوم، حتى لو كان تغييرًا بسيطًا.
- ساهم في المشاريع المفتوحة المصدر: حتى المساهمات البسيطة، مثل إصلاح خطأ إملائي في وثائق مشروع مشهور، تُظهر أنك مبادر ومتعاون.
لقد قطعت الآن شوطًا طويلًا. بدأت من فوضى الملفات، وتعلمت الفرق بين Git وGitHub، وقمت بتثبيت Git، وفهمت أوامر Git الأساسية، وأنشأت مستودعك الأول، وتعاونت عبر الفروع، والآن أنت تعرف كيف تبني هويتك كمطور محترف. هذه ليست نهاية الرحلة، بل هي بدايتها المنظّمة والقوية في عالم تطوير البرمجيات الواسع.