ตัวอย่างบทเรียน

الفروع: الواقع الموازي لرمزك البرمجي

الفروع هي قلب Git، وهنا يبدأ معظم المبتدئين بالخوف. سنزيل الغموض عن الفروع: سنبين أن الفرع هو مجرد مؤشر، وليس نسخة من الملفات. سنشرح كيفية إنشاء الفروع، والتبديل بينها، ودمج التغييرات، وسنرى الفرق بين الدمج السريع (fast-forward) والدمج ثلاثي الاتجاهات من خلال أمثلة حية.

فرع HEAD دمج
คุณจะเรียนรู้อะไรในบทเรียนนี้
  • ستفهم أن الفرع هو مؤشر خفيف الوزن، وستتوقف عن الخوف من إنشائها لأي سبب.
  • ستتمكن من إنشاء الفروع، والتبديل بينها، ودمج التغييرات باستخدام أمر الدمج (merge).
  • ستتمكن من التمييز بين الدمج السريع (fast-forward) والدمج ثلاثي الاتجاهات، وفهم متى يُستخدم كل سيناريو.

จุดเริ่มต้นของบทเรียน

خرافة نسخ الملفات عند إنشاء الفروع

  • الفرع ليس نسخة من الملفات، بل مؤشر خفيف
  • إنشاء الفرع يستغرق أجزاء من الثانية
  • تكلفة تخزين إضافية شبه معدومة
  • جميع الفروع تعتمد على الملفات نفسها

تخيّل لو أن كل مرة تنشئ فيها فرعاً، يتم نسخ المشروع كاملاً. سيكون هذا كابوساً للمستودعات الكبيرة! لحسن الحظ، Git مصمم بطريقة أذكى بكثير. الفرع مجرد مؤشر إلى إيداع معين في سجل التغييرات. لا يحدث أي تكرار للملفات، وهذا ما يجعل التعامل مع الفروع سريعاً جداً. الأمر أشبه بالتنقل بين نقاط مختلفة في الخط الزمني للكود، لا بإنشاء نسخ متوازية لكل تغيير.

كيف تعمل الفروع داخلياً

  • الفرع = ملف نصي يحتوي على هاش الإيداع
  • يُحفظ في .git/refs/heads/
  • الحجم: 40 حرفاً بالضبط
  • الفرع الجديد = ملف جديد يحتوي على الهاش

دعونا نلقي نظرة داخل Git. كل فرع هو ببساطة ملف نصي داخل المجلد المخفي .git. يحتوي هذا الملف على أربعين حرفاً فقط: هاش آخر إيداع في الفرع. عندما تنشئ فرعاً جديداً، يكتب Git هاش الإيداع الحالي في ملف جديد. تستغرق العملية أجزاء من الثانية حتى لو كان المشروع يحتوي على آلاف الملفات. الآن أصبح واضحاً لماذا يحدث التبديل بين الفروع فوراً.

علامة مرجعية بدلًا من نسخة من الكتاب

  • الفرع كعلامة مرجعية في كتاب
  • لا ينسخ المحتوى
  • انتقال فوري
  • يمكن إنشاء أي عدد منها

لنجعل الفكرة أقرب إلى تجربة القراءة. عندما تضع علامة مرجعية في صفحة، هل هذا يعني أنك نسخت الكتاب كله؟ لا. أنت فقط تحدّد مكانًا لتعود إليه لاحقًا. الفرع في Git يعمل بالطريقة نفسها تقريبًا: علامة خفيفة تشير إلى حالة معيّنة من الكود. يمكنك إنشاء عشرات العلامات من دون أن تستهلك مساحة تخزين إضافية. وهذا يغيّر طريقة تفكيرنا في التعامل مع أكثر من نسخة من المشروع في الوقت نفسه.

บทเรียนฉบับเต็มใช้ได้เมื่อสมัครสมาชิก

ฉบับเต็มมีสไลด์เพิ่มอีก 21 สไลด์

วิดีโอ สไลด์ทั้งหมด โน้ต แบบทดสอบ AI ติวเตอร์ และการสัมภาษณ์จะเปิดหลังเข้าสู่ระบบและสมัครสมาชิก

เข้าสู่ระบบหรือลงทะเบียน สมัครสมาชิก

เนื้อหาบทเรียน

  1. خرافة نسخ الملفات عند إنشاء الفروع
  2. كيف تعمل الفروع داخلياً
  3. علامة مرجعية بدلًا من نسخة من الكتاب
  4. إنشاء فرع عمليًا
  5. كيف تعمل الفروع داخل Git
  6. إنشاء فرع جديد
  7. إنشاء فرع جديد والانتقال إليه بسرعة
  8. ماذا يحدث عند الانتقال بين الفروع
  9. عندما يحدث دمج الفروع من دون تعارضات
  10. كيف يعمل الدمج السريع (Fast-forward)
  11. مثال عملي: دمج فرع feature في main
  12. عندما لا يمكن دمج الفروع تلقائيًا
  13. كيف يظهر تعارض الدمج
  14. خطوات حل التعارض
  15. لماذا لا ينجح الدمج البسيط دائمًا؟
  16. كيف يعمل الدمج ثلاثي الأطراف
  17. ننشئ إيداع دمج عمليًا
  18. كيف يعقّد الانتظار الطويل عملية الدمج
  19. خطر تجاهل تعارضات الدمج
  20. الطريقة الصحيحة لحل تعارضات الدمج
  21. إنشاء فرع ميزة لمهمة جديدة
  22. العمل المتزامن في فروع متعددة
  23. دمج التغييرات مع الفرع الرئيسي
  24. الخلاصة: الفروع والدمج

บทความเกี่ยวกับบทเรียนนี้

บทเรียนทั้งหมดในคอร์สนี้

  1. مقدمة: Git من الصفر إلى مُطوّر محترف
  2. لماذا نحتاج إلى Git على الإطلاق — ولماذا لا يُقدّم عليك العمل دونه
  3. تثبيت وإعداد Git لأول استخدام
  4. المستودع الأول: init وadd وcommit وسحر الفهرس
  5. قراءة سجل المشروع: أوامر log و diff و show والتنقل في السجل
  6. الفروع: الواقع الموازي لرمزك البرمجي
  7. إلغاء الأخطاء: الأوامر restore، reset، revert — الاستخدام الصحيح والخطير
  8. GitHub والمستودعات البعيدة: كودك في السحابة
  9. العمل الجماعي: النسخ المتفرعة، الفروع المميزة وطلبات السحب
  10. نزاعات الدمج: لا داعي للذعر — افهمها وحُلّها
  11. سير عمل Git في الفرق الحقيقية: أي سير عمل تختار
  12. الأدوات المتقدمة: rebase، stash، cherry-pick والعلامات (tags)
  13. المشروع النهائي: محاكاة التطوير الجماعي الفعلي