محتويات الدورة

Git وGitHub / المتوسط: إدارة التغيير التعاوني / الدرس 9

التخزين المؤقت وأشجار العمل والعمل المقطوع

اختر حفظاً مؤقتاً أو نسخة عمل منفصلة دون اعتبارهما بديلاً للتاريخ الدائم المشترك.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اشرح نطاق stash والتطبيق والتعارض.
  • استخدم أشجاراً منفصلة بملكية وتنظيف واضحين.

اختر مكان عيش المهمة المقطوعة

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

احفظ الحالة المحلية المقصودة

يركز stash العادي على تعديلات المتتبع والفهرس؛ يحتاج غير المتتبع خياراً صريحاً وللمتجاهل أوسع. لا تضم الخاص أو الضخم دون فهم. تسهل الرسالة التعرف ولا تصنع أرشيفاً دائماً. يستخدم المثال --include-untracked بملف معدل وآخر scratch في المختبر. افحص الإدخال قبل التبديل. القائمة محلية ولا تنتقل تلقائياً بمشاركة الفروع.

bash فحص تخزين محلي مؤقت
git stash push --include-untracked -m "lab notebook interruption"
git stash list
git stash show --stat stash@{0}

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

طبّق أولاً عند أهمية نقطة التعافي

يحاول apply الاستعادة دون حذف الإدخال ويجمع pop التطبيق والحذف عند النجاح، ويحتفظ عادة عند التعارض. يحتاج إرجاع الفهرس --index وقد يفشل مع اختلاف الحالة. يولد الأساس المتغير تعارضاً فافحص وحل بقصد. لا تكرر التطبيق على شجرة نصف مطبقة. تحقق قبل إزالة الحفظ واستخدم إيداعاً للعمل طويل العمر.

استخدم نسخة عمل ثانية بتاريخ مستودع مشترك

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

bash إضافة نسخة ثانية داخل المختبر المؤقت فقط
git worktree add -b lab/urgent ../urgent-checkout main
git worktree list --porcelain
git -C ../urgent-checkout branch --show-current

يجب أن ينتمي الأب والمسار للمختبر. يطبع الأخير lab/urgent. استخدم أباً مؤقتاً مداراً ولا تفترض أمان ../ في مشروع حقيقي.

نظف بعمليات تفهم المستودع

افحص الأشجار واحفظ غير المودع قبل الإزالة واستخدم عمليات removal وprune المدعومة لا حذف المجلدات عشوائياً. راجع stash قبل إسقاطه. يسهل نسيان المؤقت فسجل السبب وعد إليه. فضّل للمديد فرعاً وإيداعات مفهومة وسياسة نسخ أو مشاركة. احصر تنظيف المختبر بالأب المخصص وتحقق من عدم تغيير مستودع فعلي أو إعداد عام أو بعيد أو اعتمادات.

الأخطاء الشائعة وإصلاحها

لا يوجد scratch غير المتتبع في stash

لماذا يحدث؟
استثنى النطاق غير المتتبع.
كيف تصلحه؟
افحص الباقي واختر حفظاً مناسباً صريحاً.
كيف تتجنب تكراره؟
راجع الحالات الثلاث قبل التخزين.

يولد تطبيق stash تعارضاً

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

تتنازع نسختان فرعاً واحداً

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

اختبر فهمك

1. تحتاج إصلاحاً عاجلاً مع نسخة متسخة معقدة. أي خيار لا يغير ملفاتها؟

اعرض الحل المشروح

توفر شجرة منفصلة بفرع آخر نسخة مع بقاء الأصل. راعِ المشترك وعزل الاختبار ولا تعتبرها نسخة احتياطية للتعديلات.

2. ينجح stash apply. هل اختفى الإدخال؟

اعرض الحل المشروح

لا؛ يحتفظ به apply. تحقق من المحتوى والفهرس ثم قرر الحفظ أو الإسقاط. يفيد الاحتفاظ نقطة تعاف أثناء الفحص.

أهم ما تعلمته

  • نطاق التخزين وسلوك التطبيق خياران صريحان.
  • تفصل الأشجار الملفات وتشترك بالتاريخ.
  • يحتاج الحفظ المؤقت ملكية وتنظيفاً مقصوداً.

المراجع الرسمية