مقدمة في Git و GitHub
هل حدث معك أن عدّلت ملفاً، ثم ندمت وتمنيت لو تعود إلى النسخة القديمة؟ أو أنك سمّيت ملفاتك مشروع_نهائي.docx ثم مشروع_نهائي_2.docx ثم مشروع_نهائي_بجد.docx؟ المبرمجون يواجهون هذه المشكلة يومياً، وحلها أداة اسمها Git. في هذا الدرس ستفهم ما هو Git، ولماذا لا يستغني عنه أي مبرمج، والفرق بينه وبين GitHub.
ما هو التحكم في النسخ؟
Section titled “ما هو التحكم في النسخ؟”نظام التحكم في النسخ (Version Control System) برنامج يحفظ تاريخ مشروعك كاملاً: كل تعديل، ومتى حدث، ومن قام به، ولماذا. فتستطيع في أي وقت أن ترى ما تغيّر، أو تعود إلى أي نسخة سابقة.
تخيّله مثل نقاط الحفظ (Save Points) في ألعاب الفيديو. قبل أن تدخل مرحلة صعبة، تحفظ اللعبة. فإذا خسرت، تعود إلى نقطة الحفظ بدلاً من أن تبدأ اللعبة من أولها. و Git يسمح لك بإنشاء نقاط حفظ لكودك متى شئت، وبعدد غير محدود.
ما هو Git؟
Section titled “ما هو Git؟”Git أشهر نظام للتحكم في النسخ في العالم. أنشأه لينوس تورفالدس (Linus Torvalds) عام 2005، وهو نفسه مبتكر نواة نظام Linux، لأنه احتاج أداة قوية لإدارة كود Linux الضخم الذي يشارك فيه آلاف المطورين.
لماذا يستخدمه الجميع؟
- التاريخ الكامل: كل تعديل محفوظ، ويمكنك العودة لأي نقطة.
- التجربة بأمان: تجرّب فكرة جديدة في «فرع» منفصل، دون أن تفسد الكود الأساسي.
- التعاون: عشرات المبرمجين يعملون على نفس المشروع في نفس الوقت، و Git يدمج أعمالهم.
- مجاني ومفتوح المصدر، ويعمل على كل الأنظمة.
ما هو GitHub؟ وما الفرق؟
Section titled “ما هو GitHub؟ وما الفرق؟”هذا خلط شائع جداً، فلنوضحه:
- Git برنامج يعمل على جهازك، ويحفظ تاريخ مشروعك محلياً.
- GitHub موقع على الإنترنت يستضيف مشاريع Git، فتحفظ نسخة من مشروعك «في السحاب» وتشاركها مع غيرك.
تخيّل Git مثل الكاميرا التي تلتقط الصور وتحفظها في هاتفك، و GitHub مثل ألبوم صور على الإنترنت ترفع إليه صورك لتحفظها من الضياع وتشاركها مع أصدقائك.
GitHub تأسس عام 2008، واشترته Microsoft عام 2018، ويستضيف اليوم ملايين المشاريع، ومنها أشهر البرامج مفتوحة المصدر في العالم. وتوجد مواقع أخرى مشابهة مثل GitLab.
المفاهيم الأساسية
Section titled “المفاهيم الأساسية”- المستودع (Repository أو Repo): مجلد مشروعك بعد أن يبدأ Git بمراقبته. فيه ملفاتك، ومجلد مخفي اسمه
.gitيحفظ كل التاريخ. - الإيداع (Commit): نقطة حفظ. لقطة لحالة المشروع في لحظة معينة، مع رسالة تصف ما تغيّر.
- الفرع (Branch): خط عمل مستقل، تجرّب فيه دون أن تؤثر على الخط الأساسي.
- المستودع البعيد (Remote): نسخة من المستودع على الإنترنت، مثل GitHub.
تثبيت Git والتأكد منه
Section titled “تثبيت Git والتأكد منه”نزّل Git من موقعه الرسمي git-scm.com وثبّته (على ماك ولينكس قد يكون موجوداً مسبقاً). ثم افتح الطرفية واكتب:
git --versionستظهر رسالة فيها رقم الإصدار، مثل:
git version 2.56.0(الرقم عندك قد يختلف، والمهم أن الأمر يعمل).
أول مستودع
Section titled “أول مستودع”افتح الطرفية داخل مجلد مشروعك، ونفّذ:
git initInitialized empty Git repository in .../my-project/.git/الآن أصبح المجلد مستودع Git، وبدأ Git يراقب أي تغيير فيه. ولنرى الحالة بعد أن ننشئ ملفاً اسمه README.md:
git statusOn branch main
No commits yet
Untracked files: (use "git add <file>..." to include in what will be committed) README.mdالأمر git status من أهم الأوامر وأكثرها استخداماً: يخبرك بحالة مشروعك الآن. وهنا يقول: «أنت على الفرع main، ولا توجد نقاط حفظ بعد، ويوجد ملف جديد لا أتابعه». وفي الدرس الثالث ستتعلم git add و git commit لإنشاء أول نقطة حفظ.
جرّب بنفسك
Section titled “جرّب بنفسك”- ثبّت Git وتأكد منه بـ
git --version. - أنشئ مجلداً جديداً باسم
my-first-repoوادخل إليه في الطرفية. - نفّذ
git initثمgit status. - أنشئ ملفاً نصياً داخل المجلد، ثم نفّذ
git statusمرة أخرى، ولاحظ كيف تغيّرت الرسالة. - أنشئ حساباً مجانياً على github.com استعداداً للدروس القادمة.
أخطاء شائعة
Section titled “أخطاء شائعة”- الخلط بين Git و GitHub: Git الأداة على جهازك، و GitHub موقع لاستضافة المستودعات.
- تنفيذ git init في المجلد الخاطئ: مثل مجلد المستخدم كله! تأكد أنك داخل مجلد مشروعك قبل
git init. - حذف المجلد المخفي
.git: هذا يمسح تاريخ المشروع كله. لا تلمسه.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما الفرق بين Git و GitHub؟
Git برنامج للتحكم في النسخ، و GitHub خدمة على الإنترنت لاستضافة مستودعات Git ومشاركتها.
سؤال
ما الأمر الذي يحوّل مجلداً عادياً إلى مستودع Git؟
git init ينشئ مستودعاً جديداً، و git status يعرض حالته.
الخلاصة
Section titled “الخلاصة”- نظام التحكم في النسخ يحفظ تاريخ مشروعك ويسمح بالعودة لأي نسخة سابقة.
- Git أشهر هذه الأنظمة، وأنشأه لينوس تورفالدس عام 2005.
- GitHub موقع يستضيف مستودعات Git للحفظ والمشاركة والتعاون.
- المفاهيم الأساسية: المستودع، والإيداع (Commit)، والفرع، والمستودع البعيد.
git initينشئ مستودعاً، وgit statusيعرض حالته.