تعلم Git والتحكم بالإصدارات في ساعة واحدة: دليلك الشامل للمبتدئين
يُعد التحكم بالإصدارات (Version Control) مهارة أساسية لا غنى عنها لجميع مطوري البرمجيات. فهو يساعدك على إدارة التغييرات التي تطرأ على مشاريعك أو برامجك بكفاءة عالية. يهدف هذا المقال إلى تزويدك بالأساسيات اللازمة لـ Git ونظام التحكم بالإصدارات، مما يمكنك من التعاون بفعالية وإدارة مشاريعك البرمجية بسلاسة.
ما ستتعلمه في هذا الدليل:
- ما هو
Gitوما هو التحكم بالإصدارات؟ - إعداد بيئة
Git Bashالخاصة بك. - تهيئة مستودعك الأول.
- إنشاء أول التزام (
Commit) لك فيGit. - إنشاء فروع (
Branches) فيGit. - العودة إلى التزام سابق.
- إنشاء مستودع بعيد (
Remote Repository). - مزامنة مستودعك البعيد مع مستودعك المحلي.
- تحديث مستودع
Gitالخاص بك (المحلي والبعيد). - ماذا تعني كلمة "
Origin"؟
المتطلبات المسبقة
نفترض أن لديك بالفعل حسابًا على GitHub. إذا لم يكن لديك، يمكنك التوجه إلى GitHub لإنشاء واحد. ستحتاج أيضًا إلى تنزيل وتثبيت Git Bash من git-scm.com أو gitforwindows.org (إذا كنت تستخدم جهاز كمبيوتر يعمل بنظام Windows). الآن، دعنا نمضي قدمًا ونتعلم عن التحكم بالإصدارات.
ما هو Git وما هو التحكم بالإصدارات؟
Git هو نظام للتحكم بالإصدارات (Version Control System) يُستخدم لتتبع التغييرات التي تُجرى على ملف أو مشروع. قام بإنشائه Linus Torvalds (مبتكر نظام التشغيل Linux). من ناحية أخرى، GitHub هي منصة تعاون مفتوحة المصدر قائمة على السحابة، تتيح للمطورين مشاركة البرمجيات والتعاون في مشاريع مختلفة بسهولة. يمكن لأي شخص، من مشاريع المصادر المفتوحة إلى الفرق الخاصة والمشاريع الفردية، استخدام GitHub. يمكنك ببساطة تحميل الكود الخاص بك وتتبع التغييرات التي تمت في المشروع للاستخدام المستقبلي.
ملخص: التحكم بالإصدارات هو نظام يسجل التغييرات التي تطرأ على ملف أو مجموعة من الملفات بمرور الوقت، بحيث يمكنك استدعاء إصدارات محددة لاحقًا.
إعداد بيئة Git Bash الخاصة بك
لأغراض هذا الدرس، سنقوم بإنشاء مجلد جديد، أسميته babysteps2git. سنستخدمه كمستودع محلي لنا طوال هذا المقال.
داخل مجلد babysteps2git هذا، لدينا ملف index.html، والذي سنستخدمه كأمثلة. لقد أنشأته من واجهة سطر الأوامر المفضلة لدي، Cmder. يمكنك إنشاء ملفك الخاص بكتابة الأمر touch index.html داخل مجلد babysteps2git (يجب أن يتم ذلك من موجه الأوامر الخاص بك) أو يمكنك إنشاء واحد من محرر النصوص الخاص بك.
الآن، دعنا نقوم بإعداد Git عالميًا عن طريق تهيئة اسم المستخدم والبريد الإلكتروني الخاصين بنا (إذا كانت هذه هي المرة الأولى التي تستخدم فيها Git). افتح Git Bash، ثم استخدم الأمر git config --global user.name "اسمك" لتهيئة اسم المستخدم الخاص بك والأمر git config --global user.email "بريدك الإلكتروني" لتهيئة بريدك الإلكتروني. في المثال أدناه، اسم المستخدم الخاص بي على GitHub هو emmanuellar بينما عنوان بريدي الإلكتروني هو emmanuellar805@gmail.com.
للتحقق مما إذا تمت إضافة تهيئتك، اكتب git config --global user.name للتحقق من اسم المستخدم الخاص بك و git config --global user.email للتحقق من بريدك الإلكتروني. إذا كانت تهيئتك ناجحة، فستحصل على اسم المستخدم وعنوان البريد الإلكتروني الخاصين بك بمجرد كتابة هذه الأوامر والضغط على Enter.
تهيئة المستودع (Initializing your Repository)
الآن سترغب في إخبار Git: "هذا هو المجلد/الدليل الذي أريد أن يعمل Git فيه الآن." لتهيئة مستودع، تأكد من أنك في الدليل الذي تعمل عليه. في حالتي هنا، هو مجلد babysteps2git. ثم اكتب git init واضغط Enter.
إنشاء أول التزام لك في Git (Making Your First Commit)
الالتزام (Committing) في Git يعادل الحفظ عند العمل على المستندات. إنها طريقة لحفظ تغييراتك في المستودع وتخزينها بمعرف فريد ورسالة. يمكن استخدام المعرف والرسالة لتتبع الإصدار الذي تحتاجه من المشروع. هذا هو أحد الاختلافات بين git commit و save as.
قبل أن تتمكن من إجراء التزام، يجب عليك "تجهيز" (stage) عملك. التجهيز هو طريقة لإخبار النظام: "لقد أجريت الكثير من التغييرات على عملي، ولكن هذا التغيير، وذاك، وهذا الآخر هي التي أريد حفظها." لذا، عندما تريد إضافة تغييرات، قم بذلك:
git add اسم-الملفات
إذا كنت ترغب في إضافة جميع الملفات التي أجريت عليها تغييرات، فاكتب git add . بدلاً من ذلك. فقط تأكد من أنك داخل مجلد المشروع.
بعد إضافة/تجهيز الملفات، يمكنك الآن الالتزام بها. يجب عليك الالتزام بتغييراتك باستخدام رسائل التزام قصيرة ولكن مفصلة مثل تلك الموضحة أعلاه. لعرض حالة المستودع الخاص بك، ومعرفة الفرع الذي تعمل عليه، والملفات التي تم تعديلها، والكود الذي تم تجهيزه، أو لم يتم تجهيزه، أو جاهز للالتزام، ما عليك سوى استخدام الأمر:
git status
إنشاء الفروع في Git (Creating Branches)
لنفترض أنك تعمل على إصدارات مختلفة من مشروع أو تتعاون في مشروع مع بعض الأصدقاء أو الزملاء. من المهم أن يكون لديك فرع يسمى "master"، وهو الفرع الافتراضي لكل مستودع يخزن الكود الأصلي والمعدل من المساهمين المختلفين.
للتعاون أو العمل على إصدارات مختلفة من مشروع، يجب علينا العمل من فروع مختلفة. من خلال التطوير في الفروع، لا يمكن فقط العمل على إصدارات متعددة من الكود الخاص بك بالتوازي، بل يحافظ أيضًا على فرع master الرئيسي خاليًا من الكود المشكوك فيه. لذا، لمشروعنا babysteps2git، يمكننا أن نقرر أن يكون لدينا عدة فروع، كل منها يضم إصدارًا مختلفًا من الكود.
لإنشاء فرع جديد في Git، استخدم الأمر:
git branch اسم_الفرع
للانتقال إلى الفرع الجديد (checkout)، استخدم:
git checkout اسم_الفرع
يمكن تنفيذ الأمرين أعلاه في وقت واحد باستخدام الأمر:
git checkout -b اسم_الفرع
العودة إلى التزام سابق (Reverting to a Commit)
هنا يأتي شيء آخر مثير للاهتمام في Git: القدرة على التراجع عن التغييرات التي أجريتها بمرور الوقت، وهو ما لا يمكن لـ CTRL+Z فعله. أثناء العمل مع Git، قد ترغب في العودة إلى حالة معينة من الكود الخاص بك، أو حتى العودة إلى إصدار أقدم من عملك. يمكنك القيام بذلك عن طريق العودة إلى الالتزام المحدد الذي تريد العودة إليه. كل التزام نقوم به له معرف فريد (ID) مرتبط به. للحصول على هذا المعرف، يمكنك كتابة:
git log
بدلاً من ذلك، يمكن تسجيل الإخراج أعلاه في سطر واحد باستخدام:
git log --oneline
مما سبق، يمكنك رؤية المعرف (ID) ورسائل الالتزام لكل من الالتزامات. للعودة، اكتب:
git revert معرف_الالتزام
يعيد هذا الأمر الكود إلى حالته في وقت ذلك الالتزام.
إنشاء مستودع بعيد (Creating a Remote Repository)
لإنشاء مستودع بعيد، سنفتح حسابنا على GitHub ونضغط على زر "New" (كمستخدم GitHub لأول مرة، ربما سترى زر "Create Repository" الأخضر بدلاً من ذلك).
بأي طريقة تفعلها، ستنقلك إلى الصفحة حيث تدخل اسم المستودع الخاص بك ووصفًا لمشروعك. كما يمنحك خيار جعل مستودعك خاصًا (private) أو عامًا (public).
يمكنك أيضًا تهيئة مستودعك بملف read me عن طريق تحديد مربع الاختيار الخاص بـ read me.
عند النقر على "إنشاء"، سيتم إنشاء مستودع جديد بعنوان URL فريد.
مزامنة مستودعك البعيد مع مستودعك المحلي
الآن بعد أن أنشأنا مستودعنا البعيد، يجب علينا مزامنته مع مستودعنا المحلي حتى يتمكن الاثنان من التواصل بسلاسة. افتح Git Bash، انتقل إلى المجلد الذي تعمل عليه، وأدخل الكود التالي:
git remote add origin url
تحديث مستودع Git الخاص بك (البعيد والمحلي)
دعنا نمضي قدمًا ونضيف بعض الكود إلى ملف HTML الخاص بنا:
<html lang= "en" > <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge> <title>Document</title> </head> <body> <label for="inputEmail" class="sr-only">Email Address</label> <input type="email" class="form-control" id="inputEmail" placeholder="Password"> </body> </html>
دعنا نكرر عملية تجهيز (staging) والتزام (committing) تغييراتنا:
git add index.html
git commit -m "added a form"
كما هو الحال، مستودعنا المحلي يسبق المستودع البعيد بالتزام واحد. لتحديث المستودع البعيد، سيتعين علينا دفع عملنا من المستودع المحلي إلى المستودع البعيد باستخدام الكود:
git push origin master
"master" هو الفرع الافتراضي لكل مستودع وغالبًا ما يضم الكود الرئيسي للمشروع.
يمكنك أيضًا اختيار إنشاء فرع جديد إذا، على سبيل المثال، قمت بإنشاء ميزة جديدة ولكنك قلق بشأن إجراء تغييرات على الفرع الرئيسي للمشروع (فرع master). ما عليك سوى كتابة git branch اسم_الفرع لإنشاء فرع جديد، واستخدم git checkout اسم_الفرع للتبديل إلى الفرع الجديد.
يمكنك دائمًا استخدام git branch للتأكد من الفروع في هذا المستودع. يشير اسم الفرع الذي بجانبه علامة النجمة إلى الفرع الذي تشير إليه في وقت معين.
يمكنك أيضًا دفع التغييرات من فرعك الجديد إلى مستودعك البعيد باستخدام git push origin اسم_الفرع. عندما تقوم بالدفع إلى المستودع البعيد، سيقوم GitHub تلقائيًا بإنشاء الفرع لك على مستودعك البعيد. هذا يسمح للآخرين برؤية التغييرات التي أجريتها.
قد ترغب أيضًا في تحديث فرع المشروع الرئيسي (فرع master) بمحتويات الفرع الجديد البعيد. يمكنك القيام بذلك عن طريق التبديل إلى فرع master وتشغيل git pull origin الفرع_الجديد.
يقوم هذا بتحديث فرع master بجميع التغييرات التي تم تنفيذها على الفرع الجديد.
ماذا تعني "Origin"؟
Origin هو اسم مختصر للمستودع البعيد الذي تم استنساخ المشروع منه في الأصل. وبشكل أكثر دقة، يتم استخدامه بدلاً من عنوان URL الخاص بهذا المستودع الأصلي، ويجعل الإشارة إليه أسهل.
لذا، لدفع تغييراتك إلى المستودع البعيد، يمكنك استخدام أحد الأوامر التالية:
git push origin اسم_الفرع
أو
git push https://github.com/اسم_المستخدم/اسم_المستودع.git اسم_الفرع
لاحظ أنه قد يُطلب منك إدخال اسم المستخدم وكلمة المرور. لن تظهر كلمة المرور أثناء إدخالها. فقط اكتبها بشكل صحيح واضغط Enter.
الخلاصة التقنية
لقد استعرضنا للتو دليلًا خطوة بخطوة لاستخدام Git للمرة الأولى. لا تتردد في الرجوع إليه كلما واجهت صعوبة. ليس عليك حفظ الأوامر عن ظهر قلب، فستتمكن من تذكرها مع مرور الوقت والممارسة. إن إتقان Git يمثل حجر الزاوية في أي مسيرة تطوير برمجيات حديثة، حيث يضمن التعاون الفعال، تتبع التغييرات، والقدرة على استعادة الإصدارات السابقة بسهولة، مما يعزز جودة الكود ويقلل من الأخطاء المحتملة في المشاريع المعقدة. نأمل أن يكون هذا المقال قد قدم لك أساسًا متينًا للانطلاق في عالم التحكم بالإصدارات.