Git وGitHub / الأساسي: نموذج Git المحلي / الدرس 4
الفروع وHEAD والتبديل الآمن
استخدم مراجع الفروع لفصل العمل وافهم أثر تغيير المرجع الجاري على الملفات والإيداعات.
في هذه الصفحة
أهداف الدرس
- اشرح إنشاء الفرع وHEAD المنفصل.
- احمِ العمل غير المودع قبل تبديل السياق.
الفرع مرجع متحرك
يضيف إنشاء الفرع اسماً يشير لإيداع ولا ينسخ الملفات مادياً. عندما يشير HEAD رمزياً إليه يحركه الإيداع الجديد وتبقى المراجع الأخرى. تعرض الشجرة لقطة مختارة وتعديلات محلية، فليست الفروع مجلدات لتعديلات غير محفوظة. يفسر ذلك بقاء تعديل غير مودع بعد تبديل مسموح؛ ينتمي للشجرة لا للفرع القديم بصورة دائمة.
أنشئ خط عمل مسمى
في مختبر نظيف بإيداع main أول ينشئ git switch -c فرعاً عند الإيداع ويبدل إليه. سمّه بمهمة متماسكة لا ادعاء موافقة. بعد إيداع الفرع يبقى main عند الأصل. افحص الأسماء والنسب لا الملفات المعروضة فقط. الأوامر محلية بفرع اصطناعي ولا تنشئ فرعاً مستضافاً أو طلب دمج أو تحديث بعيد.
git switch -c feature/title
printf 'A better title\n' > title.txt
git add -- title.txt
git -c user.name="Lab Author" -c user.email="lab@example.invalid" commit -m "Add title"
git branch --show-current
يتطلب مختبراً نظيفاً بإيداع main. يطبع الأخير feature/title ولا يكتسب main الإيداع حتى تكامل صريح. يولد Git المعرّفات والتنسيق.
افهم رفض التبديل
يرفض Git عادة تبديلًا يمحو تعديلات محلية متعارضة أو مسارات غير متتبعة. الحماية سياقية وليست حفظاً تلقائياً. افحص الحالة ثم أودع تغييراً متماسكاً أو خزّن مؤقتاً بقصد أو استخدم شجرة منفصلة. لا تجب الرفض بخيار قسري لإكمال الدرس. تسهل النظافة الدمج وإعادة الأساس. احفظ المحتوى المهم قبل أي أمر يتلفه أو يستبدله.
سمِّ الإيداعات التجريبية قبل مغادرتها
قد يفصل فحص إيداع مباشرة HEAD فيشير للكائن لا اسم فرع. تبقى الإيداعات الجديدة صحيحة لكن لا يحفظ فرع رأسها تلقائياً بعد المغادرة. أنشئ فرعاً للتجربة المهمة. يقرأ المثال لقطة سابقة ثم يسمي فرعاً منها ولا يعيد main أو يكتب تاريخه. تفيد الحالة للفحص والاختبار مع فهم مرجع العمل الجديد.
git switch --detach HEAD~1
git switch -c experiment/old-title
git branch --show-current
ينفذ بمختبر بإيداعين على الأب الأول وشجرة نظيفة. الاسم الأخير experiment/old-title ويبقى الفرع الأصلي كما هو، ويتغير الجاري والمرجع الجديد فقط.
أدر الأسماء دون خلطها بحذف البيانات
يغير اسم الفرع أو حذفه المراجع لا كل الكائنات فوراً. تحدد قابلية الوصول والسجل المرجعي والصيانة التعافي. تفيد حماية الحذف ولا تعوض معرفة التكامل بالوجهة أو الحفظ. للفرع المستضاف دورة وصلاحيات منفصلتان. نظف الفروع بعد تحقق الدمج والاختبار ومراجع الإصدار. احفظ نقاط تعاف قبل تنظيم التجارب ولا تجعل الحذف القسري اختصاراً عادياً.
الأخطاء الشائعة وإصلاحها
تظهر التعديلات غير المودعة بفرع آخر
- لماذا يحدث؟
- عاش التعديل بالشجرة لا بإيداع.
- كيف تصلحه؟
- افحص الحالة وانسب العمل بإيداع أو تخزين مقصود.
- كيف تتجنب تكراره؟
- افحص الحالة قبل تبديل المهمة.
تبدو الإيداعات التجريبية مفقودة بعد التبديل
- لماذا يحدث؟
- أُنشئ العمل بـ HEAD منفصل دون فرع.
- كيف تصلحه؟
- افحص السجل المرجعي وأنشئ فرع تعاف عند الإيداع المتحقق.
- كيف تتجنب تكراره؟
- سمِّ التجربة قبل مغادرتها.
يرفض التبديل استبدال ملف
- لماذا يحدث؟
- يتعارض العمل المحلي مع الوجهة.
- كيف تصلحه؟
- احفظ العمل واختر مسار حفظ أو تكامل مناسباً.
- كيف تتجنب تكراره؟
- تجنب القسر كاستجابة افتراضية.
اختبر فهمك
1. يتلقى فرع إيداعين. هل يتحرك main أيضاً؟
اعرض الحل المشروح
لا؛ يتحرك الفرع الجاري فقط. يبقى main حتى تحديث صريح. افحص الرسم والمراجع قبل الدمج.
2. تفحص إيداع إصدار منفصلاً وتريد حفظ إصلاح. ما التالي؟
اعرض الحل المشروح
أنشئ فرعاً مسمى من النقطة المقصودة ثم اتبع الصيانة والمراجعة. لا تفترض أن الإيداع المنفصل ينشئ فرعاً أو ينشر الإصلاح.
أهم ما تعلمته
- تسمي الفروع الإيداعات وينتمي غير المودع لحالة العمل.
- يفيد HEAD المنفصل عند فهم عمر مرجعه.
- احفظ العمل قبل التبديل أو حذف الأسماء.