كنت أعمل على مشروع برمجي، وكان هذا المشروع يحتوي على أكواد كثيرة جدًا. كنت أقوم بإنشاء تطبيق، وواجهتني مشكلة في هذا المشروع لم أكن أعرف كيف أحلها. تحدثت مع صديق لي وقلت له: “أنا أعمل حاليًا على مشروع تطبيق، وظهرت فيه مشكلة لا أجد لها حلًا، وأريدك أن تساعدني في حلها أو أن نتعاون معًا في الحل”. فقال لي: “حسنًا، أرني الكود الخاص بك”. فقلت له: “حسنًا، أغلق الآن وسأرسله لك على واتساب”.
فاستغرب وسألني: “كيف سترسله لي على واتساب؟ كم عدد أسطر الكود في هذا المشروع تقريبًا؟”. قلت له: “حوالي 2000 إلى 3000 سطر من الكود”. فازداد استغرابه أكثر عندما سمع هذا الرقم وقال: “كيف سترسل لي كل هذا عبر واتساب؟ ألا تعرف شيئًا يسمى GitHub؟”. فقلت له: “لا، لا أعرف شيئًا اسمه GitHub”. فقال لي: “حسنًا، ابحث عن GitHub ثم عد لتكلمني”.
بحثت عن GitHub، كتبت على جوجل “GitHub” وصُدمت عندما رأيت موقع GitHub. فاليوم سنتحدث عن معنى GitHub.
التنظيم: مفتاح المشاريع الناجحة
لنفهم الأمر، دعنا أولًا نرى ما الذي يحدث عندما نبدأ مشروعًا برمجيًا. عادةً، أفتح محرر الأكواد مثل Visual Studio Code وأقوم بتقسيم مشروعي إلى ملفات.
لنبسط الفكرة بعيدًا عن البرمجة، تخيل أنني أريد شراء عدة أشياء: نباتات، وإضافات لمكتب العمل الخاص بي، وكرسي، وقطع للكمبيوتر. لو أحضرت دفتر ملاحظات وبدأت في كتابة كل شيء في صفحة واحدة، سيحدث التالي:
- سأكتب: أريد شراء نباتات، وأنواعها كذا وكذا.
- سأكتب في نفس الصفحة: أريد شراء إضاءة، وميكروفونات، وكرسي، وشاشة.
ستمتلئ الصفحة بسرعة، وستختلط كل الأمور ببعضها. إذا اشتريت نبتة معينة، لن أستطيع بسهولة تحديد ما إذا كنت قد اشتريتها أم لا. وإذا أردت إضافة المزيد من المشتريات، لن أجد مكانًا منظمًا. وإذا أردت حذف ما اشتريته بالفعل، ستعم الفوضى.
ولكن، ما رأيك لو اتبعت هذا الأسلوب؟ سأخصص كل صفحة في الدفتر لفئة معينة من المشتريات.
- صفحة “مستلزمات الكمبيوتر”: سأكتب فيها كل ما أريد شراءه للكمبيوتر.
- صفحة “النباتات”: سأكتب فيها كل أنواع النباتات التي أرغب في شرائها.
- صفحة “الإضاءة”: سأكتب فيها كل ما يتعلق بالإضاءة.
بهذه الطريقة، إذا نسيت شيئًا يتعلق بالإضاءة، سأذهب مباشرة إلى صفحة الإضاءة وأضيفه هناك. وإذا اشتريت شيئًا، سأشطب عليه في صفحته المخصصة. هذا التنظيم يجعل البحث عن المعلومات وتحديثها وإضافتها أسهل بكثير، لأنني أعرف محتوى كل صفحة من عنوانها.
هذا بالضبط ما نفعله في أي مشروع برمجي. نقوم بتقسيم المشروع إلى “صفحات” أو ملفات. من المستحيل كتابة كل شيء في ملف واحد، لأنه سيؤدي إلى ارتباك شديد، وسيصبح العثور على دالة معينة أو متغير معين لإصلاح خطأ ما مهمة صعبة للغاية.
لذلك، نقوم بإنشاء ملفات متعددة، كل ملف له عنوان واضح ويحتوي على الكود الخاص بوظيفة معينة. على سبيل المثال، في تطبيق ما، قد تكون لدينا المراحل التالية:
- التسجيل: ملف خاص بعملية تسجيل المستخدم.
- الصفحة الرئيسية (Home Screen): ملف مسؤول عن عرض المحتوى الرئيسي للتطبيق.
- الدفع (Checkout): ملف خاص بعملية شراء المنتجات.
إذا حدثت مشكلة في عملية الدفع، لن أذهب إلى ملف الصفحة الرئيسية، بل سأتوجه مباشرة إلى ملف الدفع وأقوم بإصلاح المشكلة هناك.
المشكلة الحقيقية في مشاركة الكود
الآن نعود إلى صديقي الذي قال لي: “كيف سترسل لي كل هذه الأكواد؟ إذا أرسلتها لي عبر واتساب، سأحتاج إلى نسخ ولصق كل الكود وتنظيمه في ملفات لأتمكن من تشغيل المشروع وفهم أين يكمن الخطأ. قد أحتاج أسبوعًا فقط لإعداد المشروع قبل أن أبدأ في البحث عن المشكلة!”.
وبنسبة مؤكدة، حتى لو تمكن من نسخ ولصق كل شيء، قد تحدث مشاكل أخرى في الكود بسبب هذه العملية اليدوية. الحل هنا هو GitHub.
إذًا، ما هو GitHub؟
GitHub هو موقع يسمح لك برفع مشروعك البرمجي بكل ملفاته وصفحاته وبنفس الترتيب الذي أنشأته. حرفيًا، لو رفعت المشروع على GitHub، يمكن لصديقي بنقرة زر واحدة أن يحصل على نسخة كاملة من المشروع على جهازه، بنفس الملفات وكل شيء كتبته.
أهم مميزات GitHub
يقدم GitHub ميزات عديدة، وسنتحدث عنها واحدة تلو الأخرى.
1. حفظ المشروع
تخيل لو حدثت أي مشكلة لجهاز الكمبيوتر الخاص بك، فإن مشروعك الموجود عليه فقط قد ضاع إلى الأبد. لكن إذا رفعته على GitHub، فهو محفوظ في مكان آمن. الأمر تمامًا مثل رفع صورة على فيسبوك؛ حتى لو غيرت جهازك، ستجد الصورة موجودة في حسابك. GitHub يفعل نفس الشيء لأكوادك. بغض النظر عن مكانك أو الجهاز الذي تستخدمه، ستجد مشروعك متاحًا.
2. مراقبة التعديلات (Version Control)
وهذه هي الميزة الأهم في GitHub. يسمح لك GitHub وGit (الأداة التي بُني عليها GitHub) بمراقبة كل تعديل تقوم به في الكود. سواء كنت تعمل بمفردك أو مع فريق، يتم تسجيل كل تغيير.
عندما تعمل مع فريق، لن يقوم كل شخص بكتابة سطر ثم تقومون بتجميع كل هذه الأسطر معًا، فهذا سيؤدي حتمًا إلى تعارض في الأكواد. هنا يأتي دور Git، وهو نظام التحكم في الإصدارات.
ببساطة، لكي لا تختلط عليك الأمور:
- GitHub: هو الموقع الذي تستضيف عليه مشروعك.
- Git: هو الأداة التي تراقب التعديلات على مشروعك محليًا على جهازك.
يراقب Git مشروعك عبر أمرين أساسيين:
commit
: هذا الأمر يشبه أخذ “لقطة” أو حفظ نسخة من التعديلات التي أجريتها. إذا قمت بتعديل ما ثم تراجعت عن قرارك، يمكنك بسهولة العودة إلى النسخة المحفوظة.push
: بعد أن تقوم بعملcommit
للتعديلات، يمكنك استخدام هذا الأمر لـ “دفع” أو رفع هذه التعديلات إلى GitHub، لتظل محفوظة هناك.
فبدلًا من رفع المشروع بأكمله مرة أخرى في كل مرة تضيف فيها شيئًا جديدًا، كل ما عليك فعله هو عمل push
للتعديلات الجديدة فقط.
3. مكتبة ضخمة من الأكواد
GitHub ليس مجرد مكان لرفع أكوادك، بل هو موسوعة أو مكتبة ضخمة تحتوي على أكواد ومشاريع لا حصر لها من مبرمجين آخرين. أي شخص يمكنه رفع مشروعه على GitHub وجعله إما:
- Public: متاح للجميع ليطلعوا عليه.
- Private: لا يمكن لأحد رؤيته غيرك.
يمكنك البحث عن أي مشروع تريده. على سبيل المثال، إذا أردت إنشاء لعبة الثعبان باستخدام لغة C++، يمكنك البحث في GitHub عن: snake game c++
. ستجد العديد من الأشخاص الذين قاموا بإنشاء هذه اللعبة ورفعوها، ويمكنك بنقرة زر واحدة تنزيل المشروع وفتحه على جهازك، والتعلم منه، وحتى الإضافة عليه. هذه واحدة من أفضل الطرق لتطوير مهاراتك البرمجية: قراءة أكواد الآخرين والتعلم منها.
خاتمة
إذًا، GitHub باختصار هو موقع لرفع مشاريعك البرمجية، وحفظها، ومشاركتها مع الآخرين، والتعاون معهم. كما أنه مصدر هائل لتعلم واكتشاف مشاريع حقيقية في كل المجالات تقريبًا، من تطوير الويب إلى الذكاء الاصطناعي.
هذا المقال كان مقدمة بسيطة عن عالم GitHub. في المقالات القادمة، سنتحدث أكثر عن Git وGitHub، وكيفية استخدامهما لرفع المشاريع وإدارتها بفعالية. أتمنى أن يكون كل شيء سهلًا وبسيطًا بالنسبة لك. أنا فخور بك حقًا، وأراك في المقالات القادمة.