انتقل إلى محتوى الدرس
الدرس 01
دورة Version Control

مقدمة في نظام التحكم في الإصدارات GitGit Introduction

تعرّف على مفهوم التحكم في الإصدارات ولماذا تفشل النسخ اليدوية للمجلدات في المشاريع الحقيقية، والفرق بين الأنظمة المركزية والموزعة، ولماذا يقود Git هندسة البرمجيات الحديثة.
أقسام الدرس
6
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
1,951
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يُعرَّف نظام التحكم في الإصدارات (Version Control System — VCS) بأنه أداة هندسية تسجل التغييرات التي تطرأ على ملفات الكود المصدري عبر الزمن، مما يتيح لك استرجاع أي إصدار سابق بدقة، ومعرفة المطور الذي عدّل كل سطر، وفهم سبب التعديل، والتراجع الفوري عند ظهور أي خلل برمجي.

  • التوثيق الزمني الدقيق: تسجيل هوية المؤلف والتوقيت والسبب الهندسي لكل نسخة محفوظة في المشروع.
  • التجريب الآمن للميزات: اختبار الأفكار والتعديلات الجديدة دون تهديد استقرار النسخة العاملة.
  • الاسترجاع الفوري: العودة إلى آخر إصدار سليم بضغطة واحدة عند اكتشاف خطأ غير متوقع.
تطور أنظمة التحكم في الإصدارات ومعمارية Git الموزعة
Shell
# Clean project workspace tracked by VCS
ls -la closetag-portal/
# index.html
# styles.css
# app.js

يلجأ كثير من المبتدئين قبل تعلم أدوات التحكم في الإصدارات إلى نسخ مجلد المشروع يدوياً بأسماء مثل project-final وproject-final-2. غير أن هذا الأسلوب اليدوي ينهار سريعاً في المشاريع الحقيقية للأسباب التالية:

  • غياب المقارنة الدقيقة: يستحيل معرفة الأسطر الثلاثة التي تغيرت داخل ملف كبير بمجرد النظر إلى مجلدين منسوخين.
  • مسح تعديلات الزملاء بالخطأ: عند تعديل ملف مشترك من مطورين مختلفين ونسخه يدوياً، تطغى إحدى النسختين على الأخرى وتضيع التعديلات.
  • انعدام سياق القرار البرمجي: لا تخبرك أسماء المجلدات أبداً لماذا حُذف سطر معين قبل ثلاثة أشهر.
Shell
# Anti-pattern: manual duplicated folders
ls -1 ~/Desktop/legacy-copies/
# site-backup-monday/
# site-final-v2/
# site-final-fixed-really/

حاول الجيل الأول من الأدوات حل مشكلة النسخ اليدوي عبر الأنظمة المحلية التي تحفظ الفروق على جهاز واحد فقط، ثم ظهرت أنظمة التحكم المركزية (Centralized VCS — CVCS) مثل Subversion (SVN) وPerforce؛ حيث يحتفظ خادم مركزي وحيد بالسجل التاريخي الكامل، ويسحب المطورون ملفات العمل منه عبر الشبكة. غير أن هذا النموذج يعاني من نقطة ضعف خطيرة هي نقطة الفشل الوحيدة؛ فإذا انقطع الاتصال بالخادم توقف حفظ الإصدارات ومراجعة السجل تماماً، وإذا تلف قرص الخادم المركزي دون نسخة احتياطية ضاع تاريخ المشروع بأكمله.

جاءت أنظمة التحكم في الإصدارات الموزعة (Distributed VCS — DVCS) وعلى رأسها Git لتنهي قيود الأنظمة المركزية جذرياً؛ فبدلاً من سحب النسخة الأخيرة فقط من الملفات، يمتلك كل مطور على جهازه نسخة كاملة ومتطابقة من المستودع تضم تاريخ التعديلات والفروع كافة:

  • عمل محلي كامل بدون إنترنت: يمكنك تسجيل الإصدارات ومقارنة الملفات ومراجعة السجل التاريخي على حاسوبك مباشرة دون أي اتصال بالشبكة.
  • أمان وموثوقية مضاعفة: إذا تعطل الخادم المشترك، فإن نسخة أي مطور في الفريق كافية لاستعادة المستودع بكامل تاريخه فوراً.
Shell
# Every developer workstation holds full history
# 1. Edit files locally (index.html)
# 2. Record snapshots to local disk instantly
# 3. Sync with teammates when back online

ابتكر المهندس لينوس تورفالدس (Linus Torvalds) مؤسس نواة لينكس نظام Git في أبريل عام 2005 لإدارة تطوير نواة Linux Kernel الضخمة بكفاءة وحرية كاملة، وقد صممه وفق أهداف هندسية صارمة جعلته المعيار العالمي الأول اليوم:

  • السرعة الفائقة: كُتب بلغة C ليواكب المشاريع العملاقة التي تضم عشرات الآلاف من الملفات دون أي تباطؤ.
  • دعم التطوير غير الخطي: إنشاء ودمج الفروع المتوازية بسرعة وسلاسة فائقة.
  • الحماية التشفيرية للبيانات: فحص كل ملف وإصدار ببصمة رقمية تمنع أي تلف أو تلاعب غير مرصود.
Shell
# Core Git engineering milestones (2005 -> Present)
# Creator: Linus Torvalds (Linux Kernel)
# License: Open Source (GPLv2)
# Platforms: Linux, macOS, Windows

قبل الانتقال إلى دراسة البنية الداخلية لنظام Git في الدرس القادم، يلخص الجدول المقارن التالي الفروق الجوهرية بين النسخ اليدوي والأنظمة المركزية ونظام Git الموزع:

معيار المقارنةنسخ المجلدات يدوياًالنظام المركزي CVCS مثل SVNالنظام الموزع DVCS مثل Git
مكان حفظ السجل التاريخيلا يوجد سجل (مجلدات مبعثرة)خادم مركزي واحد فقطمستودع كامل على جهاز كل مطور
العمل وحفظ النسخ بدون إنترنتنسخ يدوي يفتقر للتوثيقغير متاح عند انقطاع الشبكةمدعوم بالكامل محلياً بنسبة 100%
سرعة المقارنة والاسترجاعبطيئة وعرضة للخطأ البشريمرتبطة بسرعة الاتصال بالخادمفورية لأنها تقرأ من القرص المحلي
الحماية من فقدان التاريخمرتفعة المخاطر عند استبدال ملفنقطة فشل وحيدة في الخادمكل نسخة مطور تعمل كنسخة احتياطية كاملة
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

تعرفت في هذا الدرس على مفهوم أنظمة التحكم في الإصدارات وأسباب فشل نسخ المجلدات يدوياً، والفارق المعماري بين الأنظمة المركزية والأنظمة الموزعة، ونشأة نظام Git وأهداف تصميمه الهندسية. الخطوة التالية: انتقل الآن إلى الدرس رقم 2 «كيف يعمل Git اللقطات والمناطق الثلاث» لاكتشاف آلية اللقطات الكاملة وبصمات SHA-1 والمناطق الثلاث.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Version Control System نظام التحكم في الإصدارات
نظام برمجي يسجل التعديلات التي تطرأ على الملفات عبر الزمن لإتاحة مقارنتها واسترجاع أي إصدار سابق بدقة.
للمراجعة
02 Centralized VCS نظام التحكم المركزي
معمارية تحفظ السجل التاريخي الكامل على خادم مركزي واحد بينما يسحب المطورون نسخة العمل فقط.
للمراجعة
03 Distributed VCS نظام التحكم الموزع
معمارية مثل Git يمتلك فيها كل مطور نسخة محلية كاملة تضم جميع الإصدارات والفروع على جهازه.
للمراجعة
04 Repository المستودع البرمجي
قاعدة البيانات التي تحفظ جميع لقطات المشروع وبيانات المؤلفين والفروع والسجل التاريخي الكامل.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 VCS VCS
Version Control System
نظام إدارة وتتبع إصدارات الملفات البرمجية عبر الزمن.
للمراجعة
02 CVCS CVCS
Centralized Version Control System
نظام تحكم مركزي يعتمد على خادم وحيد لحفظ سجل الإصدارات.
للمراجعة
03 DVCS DVCS
Distributed Version Control System
نظام تحكم موزع يمتلك فيه كل جهاز نسخة كاملة من المستودع.
للمراجعة
04 SCM SCM
Source Code Management
إدارة الكود المصدري وتنسيق تعديلات فرق البرمجة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. بدّل بين التبويبات الثلاثة في المختبر التفاعلي لمقارنة النسخ اليدوي والنظام المركزي ونظام Git الموزع.

  2. افحص مجلدات مشاريعك المحلية وحدد المجلدات المكررة يدوياً التي ينبغي إدارتها عبر مستودع Git منظم.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الوظيفة الأساسية لنظام التحكم في الإصدارات مثل Git؟

يتولى نظام التحكم في الإصدارات تسجيل تاريخ التعديلات وهوية المؤلف واسترجاع الإصدارات السابقة ومقارنتها.

02

في أنظمة التحكم الموزعة مثل Git، يمتلك جهاز كل مطور نسخة محلية كاملة من السجل التاريخي للمستودع.

صواب؛ فكل مطور في Git يمتلك مستودعاً محلياً كاملاً يضم جميع اللقطات والفروع التاريخية.

03

لماذا تفشل طريقة نسخ المجلدات يدوياً (مثل project-final-v2) في المشاريع البرمجية الجماعية؟

تفتقر المجلدات المنسوخة يدوياً إلى سجل يوضح تغييرات الأسطر وتؤدي بسهولة إلى مسح تعديلات الزملاء بالخطأ.

04

ما نقطة الضعف المعمارية الأبرز في أنظمة التحكم المركزية CVCS مثل Subversion؟

يمثل الخادم المركزي نقطة فشل وحيدة؛ فإذا انقطع الاتصال به توقف المطورون عن حفظ الإصدارات أو فحص السجل.

05

يشترط نظام Git اتصالاً دائماً بالإنترنت لاستعراض سجل المشروع أو حفظ اللقطات المحلية.

خطأ؛ لأن Git نظام موزع يجري عمليات حفظ اللقطات ومراجعة التاريخ محلياً على القرص دون حاجة للإنترنت.

06

مَن ابتكر نظام Git عام 2005 وما المشروع الذي صُمم لإدارته في الأصل؟

ابتكر لينوس تورفالدس نظام Git في أبريل 2005 لإدارة تطوير نواة نظام التشغيل Linux Kernel.

07

لماذا تتسم العمليات اليومية في Git بسرعة فائقة مقارنة بالأنظمة المركزية؟

لأن Git يقرأ البيانات ويكتبها مباشرة في المستودع المحلي على قرص جهازك دون انتظار استجابة الشبكة.

08

يُعد نظام Git لوحة لإدارة تذاكر المشكلات الإدارية وليس نظاماً للتحكم في إصدارات الكود.

خطأ؛ فنظام Git هو نظام تحكم في الإصدارات الموزعة يتتبع لقطات الملفات وسجل الكود المصدري.