مرحبا بك عزيزي القارئ في درس جديد من دروس أكوا ويب، وفي قسم الأكاديمية . في هذا المقال سنشرح لك بالخطوات وبالصور بكل وضوح وسهولة كيف يمكنك استضافة مشاريعك البرمجية على Github بشكل أساسي، أو أي منصة أخرى مثل Bitbucket او Gitlab. الهدف من هذا المقال هو إرشادك للشرح البسيط والسهل بعيداً عن ضوضاء عدم الفهم، إلى جانب شرح كل خطوة وتفصيلها من أجلك حتى تفهم الهدف منها، والمزيد من الشرح حول منصة Github والأسباب التي تدعوك في الأساس لاستضافة مشروعك البرمجي عليها، فتابع معنا حتى النهاية.
ما هي منصة Github / Bitbucket / Gitlab ؟
قد تتسائل أولا، ما هي منصة Github من أساسه؟ وربما قد سمعت بها كثيراً إن كنت مبرمج، منصة Github هي عبارة عن مستودع ضخم يضم مجموعة من المشاريع البرمجية مفتوحة المصدر التي يمكنك الإطلاع عليها وعلى الملفات المصدرية الخاصة بها بدون مشاكل. في هذه المنصة، يمكن للمستخدم صناعة مستودع سواء بشكل عام (Public) أو بشكل خاص (Private) ثم رفع ملفات أي نوع من المشاريع البرمجية التي لديك، بعدها سيمكن لمستخدمين آخرين الإطلاع عليها، حتى أنهم يمكنهم التفاعل معها عبر خيار Fork لنسخ محتوى مشروعك لديهم من أجل التعديل عليه أو فقط تخزينه، أو Star من أجل شكرك على مجهودك في تقديم المشروع.
منصة Github وحتى سنة 2018 تقريبا كانت شركة منفصلة، قبل ان تستحوذ عليها شركة مايكروسوفت حينها، كما أن منصة Github ليست الوحيدة التي توفر لك هذه الخصائص، بل يوجد منصات شبيهة أشهرها أيضا منصة BitBucket و أيضا Gitlab اللذان لا تختلفان عن Github كثيراً وتتشاركان الكثير من الأشياء.
لما قد تود استضافة مشروعك على Github؟
أول سؤال قد تطرحه على نفسك هو: لما بحق السماء سأود أن أستضيف مشروعي البرمجي الخاص على جيتهاب؟ لا بل وسيمكن للآخرين الإطلاع عليه؟ لا شكرا !
عليك أن تدرك أخي القارئ أن الإستخدام الأساسي والرئيسي لمنصة Github هو الحصول على الـ Version Control، ونعني بذلك أنه وأثناء سيرورة برمجتك لمشروع ما أنت تقوم في كل مرة بإضافة تعديلات جديدة على المشروع، في حالة إضافة تعديل خاطئ قد يذهب المشروع كله مهب الريح، لكن ان كنت تسستضيف مشروعك على جيتهاب فيمكنك العودة لأي نقطة ( تسمى بالـ Commits ) واسترجاع مشروعك دون فقدانه.
إلى جانب هذا، سيمكنك في جيتهاب ( أي المنصات الشبيهة به ) بالإحتفاظ بمشاريعك البرمجية في حسابك، والوصول إليها من أي حاسوب آخر، والعودة لها عندما تقتضي الحاجة، دون الخشية عليها من بقائها في حاسوبك وضياعها للأبد.
أما إن كنت تخشى من أن يستكشف الآخرون الإطلاع على مشاريعك و " سرقتها "، فيمكنك في منصة Github تحويل مستودعاتك إلى مستودعات خاصة (Private) وبالتالي لن يستطيع أحد الوصول إليها، كما الحال في منصات أخرى أيضا.
التسجيل في منصة Github و شرح واجهة Github
أول الخطوات التي يجب عليك فعلها هو التسجيل في منصة جيتهاب ( أو منصات منافسة حسب الرغبة، نحن في شرح هذا المقال سنعتمد على Github ).
نتوجه إلى الرابط التالي، ونقوم بصناعة حساب بشكل عادي، الأمر سهل كما لو كنت تتسجل في أي موقع آخر، قم بإدراج بريدك الإلكتروني و الـ Username ثم كلمة السعر، ستتوصل في بريدك الإلكتروني برابط التفعيل، قم بتفعيل حسابك ومبروك عليك.
عند ولوجك بحسابك للموقع ستظهر لك واجهة كالآتي، منصة Github سهلة الإستخدام بشكل عام لكن لا ضرر في شرح بعض الخصائص الموجودة في الموقع.
القائمة رقم 1 : تضم خيارات تصفح أقسام الموقع وأي إشعارات قد تتوصل بها، الـ Pull Request و الـ Issues متعلقة بالمشاريع التي قمت بنسخها وحصلت على تراخيص التعديل عليها أو قبول تعديلاتك، وأيضا إجابات لأي مشاكل طرحتها سابقا في المنصة. الـ Marketplace هو عبارة عن صفحة خاصة بالمشاريع المدفوعة أو ذات تجربة مجانية لتجربتها أو الإطلاع عليها، أما الـ Explore (وهي نافذتي المفضلة ) فتخص استكشاف آخر المشاريع المنشورة في جيتهاب حسب الأقسام والإطلاع على المستودعات الأكثر نمواً في المنصة.
القائمة رقم 2: تختلف هذه القائمة حسب الصفحة التي تتصفحها، بما أن هذه الصفحة خاصة بـ Explore، فالقائمة تُظهر لك خيارات تصفح فرع Explore كتصفح المشاريع أو الـ Collections، أو المواضيع الأكثر مشاهدة، وحتى التقنيات المستخدمة بكثرة حاليا.
القائمة رقم 3: قائمة خاصة بإنشائك لمستودعات على Github ( وهي التي سنستخدمها لإنشاء مستودع لرفعه لاحقا في هذا المقال )، أيضا صناعة Gist وهو عبارة عن صفحة واحدة تدرج فيها أكواد منفردة غير تابعة لأي مشروع، او استضافة مشروع خارجي، والمزيد.
موقع جيتهاب ليس من الصعب تصفحه، وهو بسيط جداً من حيث أقسامه والمستودعات التي يتم إدراجها، فلك الحرية لإستكشافها أكثر.
صناعة Repository على Github
دعونا نبدأ شرحنا لهذا اليوم من خلال صناعة Repository على منصة Github، الأمر سهل أيضا في هذه المرحلة، من خلال القائمة أعلاه السابقة ( القائمة رقم 3 ) انقر على خيار New Repository، ( المستودع يعني Repository ):
- في خيار Repository Name نقوم بإدراج إسم المستودع ( أو اسم المشروع ) الخاص بنا، وهو حقل إجباري.
- في خيار الوصف (Description) نقوم بإضافة وصف المشروع الخاص بنا، وهو حقل اختياري يمكن تركه فارغا إن أردت.
- بعدها ستجد خيارين: Public و Private، خيار Public يعني أنه يمكن لأي شخص يستخدم Github إيجاد مستودعك، نسخه، الإطلاع على الأكواد البرمجية، والمزيد. أما خيار Private فيعني أنه أنت فقط من يمكنه الوصول للمستودع، ولا يمكن لأي شخص على الإطلاق الإطلاع على محتواه.
- خيار Add a Readme File، يمكنك تعليمه أو تركه، يقوم المستودع بإنشاء ملف Readme تقوم بملأه لاحقا بتفاصيل المشروع أو كيف يعمل، يتخذ أيضا المستودع محتوى هذا الملف كوصف للمشروع كاملا في الأسفل.
- خيار Add .gitignor ، ويضيف لك ملف من خلاله تستطيع إضافة أسماء ملفات في مشروعك، الملفات التي يتم إدراج إسمها في ملف .gitignor لا يتم رفعها على Github ويتجاهلها كليا. يمكنك تعليمه أو تركه.
- خيار Choose a license خيار يضيف لك أيضا ملف تقوم من خلاله بكتابة كيف يمكن للآخرين الإستفادة من مشروعك، وهل يمكنهم استغلاله لصالحهم أم لا وتعليمات خاصة بحقوق الملكية الفكرية. يمكنك تعليمه أو لا.
تحميل منفذ سطر الأوامر GIT
من أجل التعامل مع منصة رفع المشروع ( جيتهاب في هذه الحالة او منصات أخرى كما سلف الذكر أكثر من مرة ) أنت بحاجة إلى منفذ سطر أوامر متميز، وهو الـ Git. يعتبر الـ Git منفذ سطر أوامر قادر على التعامل مع أوامر الـ Git بشكل عام المتخصصة في إنشاء المشاريع، تصديرها، استيرادها، التعديل عليها وإدارتها بشكل عام، وسنرى ذلك من خلال هذه الفقرة و الفقرات القادمة.
نقوم بتحميل الـ Git من الرابط التالي ، نقوم باختيار النسخة المتوافقة مع النظام الخاص بنا ونقوم بتحميلها، ونقوم بعدها بتنصيب البرنامج على الحاسوب. أثناء عملية التنصيب، قد تجد بعض الخيارات الإضافية التي يطلب منك التعديل عليها، فقط أتركها كما هي وأكمل التنصيب بشكل عادي.
بعد تنصيبه سيمكنك الولوج مباشرة للبرنامج عبر البحث عليه ( أو من خلال قائمة إبدأ أو أيقونته في سطح المكتب )، كما يمكنك النقر يساراً داخل أي مجلد ثم النقر على عبارة Git Bash Here ليتم فتح الملف :
والآن لديك كل شيئ جاهز، لم يبقى إلا استضافة المشروع الخاص بك على منصة Github من خلال أوامر الـ Git.
استضافة مشروعك البرمجي على منصة Github باستخدام الـ Git
تتذكرون مشروعنا السابق الخاص بتهيئة قالب ووردبريس باستخدام Root/Sage؟ يمكنك الإطلاع عليه من هنا، سنختار هذا المشروع من أجل استضافته في منصة Github. إذن بعدما قمنا بصناعة مستودع في جيتهاب وتنصيب الـ Git، نقوم بفتح برنامج Git ونضع إعدادات الولوج بحسابنا الخاص على Github باستخدام الأمرين:
git config --global user.name "your username" وإدخال الـ username او إسمك الخاص.
، ثم أمر git config --global user.email johndoe@example.com من أجل إدخال بريدك الإلكتروني الذي تسجلت به في منصة Github أو أي منصة أخرى.
إن نصبت الـ Git للتو، فيمكنك تجاهل هذه الخطوة، إذ في عملية السحب أو استضافة مشروعك سيطلب منك في جميع الأحوال إدراج بريدك الإلكتروني وكلمة السر.
نعود الآن إلى المستودع الذي قمنا بإنشاءه في Github، بعد إنشاء المستودع، ستحصل على الصفحة التالية :
وتتضمن هذه الصفحة كل المعلومات التي نحتاجها لاستضافة مشروعنا الخاص على هذا المستودع، ستجد أنه يوجد خيارين ( قمنا بتعليمهما لك ): الخيار الأول هي أوامر تتبعها في حالة لم يكن لديك مستودع مسبق، أما الخيار الثاني فإن كان لديك مستودع مسبقا، سنتبع التعليمات الثانية بحكم أننا قمنا بصناعة المستودع للتو.
الرابط: https://github.com/operateur-mar/AquaWeb-RootSage-Template.git هو عنوان المستودع الخاص بنا، يتغير بناءً على اسم وخصائص مستودعك الخاص، لا تنسى تغييره إن كنت ستنسخ الأوامر من هذا المقال.
إذن نتوجه إلى مشروعنا الخاص على الحاسوب، ثم ننقر ميمنة ونقوم بفتح الـ Git وسط مجلد المشروع بشكل التالي:
من أجل تهيئة المجلد ومحتواه للرفع في منصة Github نقوم بإدراج الأمر : git init ، هذا الأمر يقوم بإضافة ملفات مخفية ( يمكنك إظهارها بتحديد خيار إظهار الملفات المخلفية في نظام الويندوز )، تلك الملفات تتضمن معلومات خاصة سنراها في الأمر القادم، لذا نقوم بتطبيق أمر Git init أولاً :
كما تلاحظ تم تكوين ملف .git، هذا المجلد سيضم الملفات التي سيتم رفعها على المستودع خاصتنا، لكن من أجل رفعها يجب إدراجها إلى المجلد، لفعل ذلك نطبق أمر: git add . ، بحيث النقطة (.) تعبر عن كل الملفات، إن أردت منع ملف من الرفع يمكنك تحديده في ملف .gitignor سابق الذكر، لكن في هذه الحالة نريد إدراج كل شيئ ( تقنيا ).
لا تقلق إن ظهرت لك بعض التحذيرات أو رسائل تتبدئ بـ Warning، بعد هذا الأمر نقوم بإدراج ما يسمى بالـ Commit، الـ commit هي الرسالة التعبيرية التي تقوم بإدراجها في كل نسخة، فمثلا في هذه النسخة سنعطيها إسم " Initial commit " أي الإرسال الأولي، لكن إن أضفنا تعديلات وأردنا رفع المشروع مجددا، سنقوم في الـ commit بإضافة رسالة تعبر عن التعديلات التي قمنا بإضافتها. دعنا نطبق ذلك عبر الأمر : git commit -m " Your message " :
الآن كل شيئ جاهز، حان الوقت لإستضافة المشروع الخاص بنا على جيتهاب، الرفع الأولي يختلف عن نشر تعديلات لاحقا، لذا، في النشر الأولي نقوم بتنفيذ الأمر:
git remote add origin https://github.com/operateur-mar/AquaWeb-RootSage-Template.git
مع تغيير الرابط كما أشرنا حسب رابط المستودع الخاص بك، سترى أنه بعد تنفيذ هذا الأمر لا يحدث شيئ عظيم، لكن الأمر التالي يحدث الكل، ننفذ الأمر : git push -u origin main
ملاحظة هامة جدا: ستلاحظ أن الكود الأصلي هو git push -u origin main ، في الأصل عبارة main كانت master لكن تم تغييرها مؤخرا إلا أن التعديلات قد لا يتم تطبيقها بشكل كامل. بشكل عام، الـ main او الـ master يُعتبر Branch ، وأثناء العمل على git ستظهر لك إما main او master كإسم الـ branch الذي تعمل فيه ( في حالتي يمكنك ملاحظة إسم master في نهاية إسم المستودع ) لذا الكود الخاص بي سيكون git push origin master و ليس main .
ننتظر قليلا وسيخبرك بنهاية العملية، نتوجه إلى رابط المستودع الذي قمنا بإنشائه، ونقوم بتحديث الصفحة :
يا سلام ! مشروعي الآن مستضاف على المنصة، ويمكنني مشاركته مع أي شخص، بل يمكنني الوصول إليه في أي وقت أريد بدون مشاكل، ويمكنني إجراء تعديلات على المشروع دون الخشية من فقدانه أو عدم اشتغاله، لأنه لدي دائماً مرجع يمكنني العودة إليه.
أكواد Git أساسية لإدارة المشروع
الآن كل شيئ جيد، لديك مشروع على منصة جيتهاب، ومتصل من خلال سطر الأمر مع المشروع ويمكنك التحكم به. إن قمت بإجراء أي تعديلات فسيتوجب عليك إعادة رفعها أيضا على جيتهاب، العملية هنا لن تتطلب الكثير من الأكواد، فقط سلسلة أكواد يجب عليك حفظها وهي كالتالي: إضافة الملفات الجديدة عبر add، تسميت النسخة الجديدة عبر الـ commit، ثم الإرسال عبر الـ Push، لتكون النتيجة الأوامر التالية:
الآن، وفي كل مرة تقوم بإجراء أي تعديلات أخرى اتبع نفس النظام. لكن وبافتراض أنك أرسلت تعديلا لم يعد على إثره يشتغل المشروع، ماذا تفعل ؟ الحل هنا هو العودة إلى نقطة (commit) كان فيها المشروع شغالاً بشكل جيد، لفعل ذلك توجه أولا إلى رابط المشروع على Github :
ستجد في عنونة المشروع إسم آخر Commit قمت بإرسالها، وستجد أيضا عدد الـ Commits الموجودة، ننقر على عدد الـ commits لنحصل على الكود الخاص بها:
ستجد عدد الـ commits والأكواد الخاص بها وتفاصيل حولها، للعودة لإحداها، يكفي نسخ الكود الخاص بها ثم تمرير أمر : git reset --hard commitnumber وذلك بالشكل الآتي :
ليس بالضرورة استخدام أمر --hard ، لكن أفضل استخدامه من أجل منع أي مشاكل في تشابك الأكواد في المشروع، بحيث يقوم حرفيا بحذف كل التعديلات وإرجاع التعديلات السابقة.
حسنا جيد حتى الآن، لكن ماذا لو أردت أن أوفر المشروع لصديق لي من أجل إجراء تعديلات، وفي نفس الوقت أقوم بتعديلات على المشروع، ألن يخلق هذا لبس في المشروع؟ نعم صحيح، سيخلق تشابكاً في الأكواد، والطريقة الصحيحة لفعل ذلك، هو إنشاء فرع جديد (Branch) ثم توجيه المشروع إلى هذا الفرع وتقديمه لشريكك في المشروع للتعديل عليه، بينما يبقى الـ master أساسي لا يتم إجراء أي تعديلات عليه.
من أجل إضافة فرع جديد، وإدراج المشروع إليه، نطبق الأوامر التالية:
أمر git checkout يسمح لنا بشكل عام بالإنتقال بين الـ Branches و الفروع الأخرى كالـ master، وخيار -b يسمح لنا بإنشاء فرع جديد، لذا الأمر الأول هو git checkout -b newbranch من أجل صناعة فرع جديد . لكن الفرع سيكون فراغ لا يتضمن مشروعنا البرمجي، أنت كمدير الـ Control Version سيتوجب عليك تمرير المشروع إليه، نقوم بذلك بشكل عادي كما جرت العادة في الأكواد السابقة، إلا أنه وهذه المرة بدل أمر git push origin master الذي يرسل إلى فرع الـ master، سنعوضه بإسم الفرع الجديد وهو newbranch.
من أجل العودة أو الإنتقال بين الفروع الأخرى، استخدم أمر git checkout master للعودة إلى master مثلا. لكن تذكر جيداً جيداً أنه لا يمكنك الإنتقال إلى فرع آخر إن قمت بإضافة تعديلات ولم تقم بحفظها أو إرسالها، في هذه الحالة قد يطلب منك الـ Git حفظ التعديلات بشكل داخلي عبر أمر git stash .
ويوجد العديد من الأوامر الأخرى التي يمكنك ممارستها في الـ Git حسب الحاجة، لكن الأساسي منها لإدارة مشروعك ونسخه قد قمنا باستعراضها في هذا المقال، وهذه قائمة Cheat cheet قد تفيدك للمزيد من الأكواد:
نتمنى أن تكون قد استفدت من هذا المقال، ونلتقي في درس آخر من دروسنا المتجددة.