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

مفهوم الفروع وإدارتها عبر الأمر git branchGit Branch

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

في أنظمة إدارة الإصدارات القديمة، كان إنشاء فرع جديد يتطلب نسخ جميع ملفات المشروع في مجلد منفصل على القرص الصلب، وهو ما يستغرق وقتاً طويلاً في المشاريع الكبيرة. أما في Git، فالفرع (Branch) ليس سوى مؤشر خفيف الوزن قابل للحركة (Lightweight Movable Pointer) يشير إلى أحد الالتزامات؛ وداخلياً يُخزن كملف نصي بحجم 41 بايت فقط داخل المسار .git/refs/heads/ يحتوي على بصمة SHA-1 المكونة من 40 محرفاً متبوعة بسطر جديد.

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

Shell
# Inspect the raw branch pointer file inside .git
cat .git/refs/heads/main

# Compare the pointer hash with the latest commit
git log -n 1 --oneline

عندما يحتوي المستودع على عدة فروع، كيف يعرف نظام Git أي فرع تعمل عليه الآن؟ يحتفظ النظام بمؤشر رمزي خاص يُسمى HEAD يُخزن داخل الملف .git/HEAD:

  • الإشارة الرمزية غير المباشرة: في الحالة الطبيعية، يشير HEAD إلى اسم الفرع النشط مثل ref: refs/heads/main، بينما يشير ملف الفرع بدوره إلى بصمة الالتزام الحالي.
  • التحقق البصري في السجل: عند تشغيل الأمر git log --oneline --decorate تظهر العبارة (HEAD -> main) بجوار الالتزام لبيان الفرع النشط وموقع المؤشر.
Shell
# Read the symbolic reference stored in .git/HEAD
cat .git/HEAD

# View commit history with branch and HEAD labels
git log --oneline --decorate -n 3

يمثل الأمر git branch الأداة الأساسية لاستعراض الفروع المحلية وإنشاء فروع جديدة لعزل الميزات البرمجية:

  • استعراض الفروع (git branch): عند تشغيله بدون معاملات، يطبع قائمة بجميع الفروع المحلية مرتبة أبجدياً ويميز الفرع النشط بعلامة النجمة *.
  • العرض التفصيلي (git branch -v): يظهر بجوار كل فرع البصمة المختصرة ورسالة آخر التزام وصل إليه.
  • إنشاء فرع جديد (git branch <name>): ينشئ مؤشر فرع جديد عند الالتزام الحالي دون الانتقال إليه، حيث يظل مؤشر HEAD على فرعك الحالي.
Shell
# Create a new branch pointer at the current commit
git branch feature-auth

# List all local branches with latest commit info
git branch -v
مخطط يوضح معمارية الفروع في Git بوصفها مؤشرات خفيفة الوزن وعلاقة مؤشر HEAD بالفرع النشط

يوفر الأمر git branch خيارات دقيقة لإعادة تسمية الفروع أو حذفها بعد انتهاء الغرض منها:

  • إعادة تسمية الفرع (git branch -m): يُستخدم لتغيير اسم فرع محدد عبر تمرير الاسم القديم ثم الجديد، أو لتوحيد اسم الفرع النشط الحالي عبر git branch -M main.
  • الحذف الآمن (git branch -d): يحذف مؤشر الفرع بشرط أن تكون التزاماته مدمجة بالفعل، ويرفض التنفيذ إذا كان الفرع يحتوي على عمل غير مدمج.
  • الحذف الإجباري (git branch -D): يحذف الفرع التجريبي فوراً حتى لو لم تُدمج التزاماته عندما تقرر إلغاء التجربة عمداً.
Shell
# Rename a local branch pointer cleanly
git branch -m feature-auth feat-login

# Safely delete a branch pointer with -d
git branch -d feat-login

تلتزم فرق هندسة البرمجيات بمعايير واضحة لتسمية الفروع تتوافق مع قواعد الفحص القياسية في Git:

  • البادئات التنظيمية القياسية: يُفضل استخدام الأحرف الإنجليزية الصغيرة والشرطات مع بادئة توضح غرض الفرع مثل feat/user-profile للميزات الجديدة، وfix/cart-total لإصلاح الأخطاء، وdocs/readme للتوثيق.
  • الرموز الممنوعة في الأسماء: يمنع Git احتواء اسم الفرع على مسافات فارغة، أو نقطتين متتاليتين ..، أو الرموز ~ و^ و: و*، أو انتهاء الاسم بالامتداد المحجوز .lock.
Shell
# Create branches following team prefix standards
git branch feat/search-bar
git branch fix/header-overlap
git branch --list "feat/*"

يلخص الجدول المرجعي التالي أهم صيغ وخيارات الأمر git branch لإدارة الفروع المحلية بكفاءة وأمان:

الأمر أو الخيارالوظيفة الأساسيةالسلوك ومستوى الأمان
git branchعرض جميع الفروع المحليةيميز الفرع النشط بعلامة النجمة *
git branch -vعرض الفروع مع آخر التزاميعرض البصمة المختصرة وعنوان الالتزام
git branch <name>إنشاء مؤشر فرع جديدينشئ المؤشر دون تغيير الفرع النشط
git branch -m <old> <new>إعادة تسمية فرع محلييعدل اسم المؤشر بأمان دون استبدال فرع موجود
git branch -d <name>حذف فرع مدمج بأمانيرفض الحذف إذا تضمن الفرع التزامات غير مدمجة
git branch -D <name>حذف فرع إجبارياًيحذف المؤشر فوراً حتى لو لم يُدمج
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

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

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

تعرفت في هذا الدرس على طبيعة الفروع في Git بوصفها مؤشرات خفيفة الوزن بحجم 41 بايت، وكيفية تتبع الفرع النشط عبر المؤشر الرمزي HEAD، وأتقنت عرض الفروع وإنشاءها وتسميتها وحذفها بأمان عبر الأمر git branch. الخطوة التالية: انتقل الآن إلى الدرس رقم 21 «التنقل بين الفروع عبر git switch وgit checkout» لتعلّم الانتقال بين الفروع وعلاج حالة المؤشر المنفصل.

مشاركة

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

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

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

المصطلحات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Branch Pointer مؤشر الفرع
ملف مرجعي خفيف الوزن بحجم 41 بايت داخل .git/refs/heads/ يحفظ بصمة SHA-1 للالتزام الذي يقف عنده الفرع.
للمراجعة
02 Symbolic Reference المرجع الرمزي
مؤشر مثل HEAD يشير إلى مسار فرع آخر بدلاً من الإشارة المباشرة إلى بصمة التزام خام.
للمراجعة
03 Active Branch الفرع النشط
الفرع الذي يشير إليه مؤشر HEAD حالياً ويظهر مسبوقاً بعلامة النجمة (*) في مخرجات git branch.
للمراجعة
04 Unmerged Branch الفرع غير المدمج
فرع يحتوي على التزامات لم تُضم بعد إلى الفرع الحالي، ويحميه الخيار git branch -d من الحذف بالخطأ.
للمراجعة

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

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

الاختصارات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 HEAD HEAD
Current Active Branch Reference
المؤشر المرجعي الخاص في Git الذي يحدد الفرع النشط واللقطة الحالية لمجلد العمل.
للمراجعة
02 SHA-1 SHA-1
Secure Hash Algorithm 1
البصمة الرقمية الست عشرية المكونة من 40 محرفاً والمحفوظة داخل ملف كل فرع.
للمراجعة
03 DAG DAG
Directed Acyclic Graph
هيكل الرسم البياني للالتزامات الذي تتحرك فوق عقده مؤشرات الفروع.
للمراجعة
04 CLI CLI
Command Line Interface
واجهة سطر الأوامر المستخدمة لتنفيذ أوامر إدارة الفروع وفحصها.
للمراجعة

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

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

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

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

0/2مهام منجزة
  1. نفّذ الأمر git branch feat/navbar داخل مستودعك المحلي، ثم شغّل git branch -v وcat .git/HEAD للتأكد من بقاء المؤشر على main.

  2. أعد تسمية الفرع feat/navbar إلى feat/top-nav عبر الخيار -m، وتحقق من القائمة ثم احذفه بأمان عبر الخيار -d.

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

مساحة التحدي

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

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

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

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

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

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

ما حقيقة الفرع (Branch) داخلياً في معمارية نظام Git؟

الفرع في Git هو مؤشر خفيف الوزن يُحفظ كملف نصي بحجم 41 بايت يضم بصمة SHA-1 للالتزام.

02

يؤدي تشغيل الأمر git branch feature-login إلى إنشاء الفرع والانتقال إليه تلقائياً في نفس اللحظة.

خطأ؛ فالأمر git branch ينشئ المؤشر فقط بينما يبقى مؤشر HEAD على الفرع الحالي دون انتقال.

03

أين يخزن نظام Git ملفات مؤشرات الفروع المحلية افتراضياً؟

تُحفظ ملفات مؤشرات الفروع المحلية داخل المجلد .git/refs/heads/.

04

إلى ماذا ترمز علامة النجمة (*) في مخرجات الأمر git branch؟

تشير علامة النجمة (*) إلى الفرع النشط حالياً الذي يشير إليه مؤشر HEAD.

05

أي خيار يحذف الفرع المحلي بأمان فقط إذا كانت التزاماته مدمجة مسبقاً؟

يتحقق الخيار الصغير -d من حالة الدمج ويمنع حذف أي فرع يحتوي على التزامات غير مدمجة.

06

ما الأمر الصحيح لإعادة تسمية فرع محلي من old-ui إلى modern-ui؟

يُستخدم الأمر git branch -m old-ui modern-ui لإعادة تسمية مؤشر الفرع المحلي.

07

كيف يتتبع مؤشر HEAD الفرع النشط في الوضع الطبيعي داخل الملف .git/HEAD؟

يخزن مرجعاً رمزياً يشير إلى مسار الفرع النشط مثل ref: refs/heads/main.

08

يسمح نظام Git باحتواء أسماء الفروع على مسافات فارغة أو انتهائها بالامتداد .lock.

خطأ؛ يمنع نظام Git وجود مسافات أو انتهاء اسم الفرع بـ .lock.

09

أي خيار في الأمر git branch يعرض البصمة المختصرة ورسالة آخر التزام بجوار كل فرع؟

يفعّل الخيار -v العرض التفصيلي الذي يطبع بصمة وعنوان آخر التزام لكل فرع.

10

أي اسم من الأسماء التالية يُعد اسماً صحيحاً ومطابقاً للمعايير الاحترافية في Git؟

يتبع الاسم feat/user-authentication معيار البادئات والأحرف الصغيرة والشرطات القياسية.