إذا كان هناك ملف في مجلد العمل على جهاز Mac الخاص بك يحتوي على نص يبدأ بـ version https://git-lfs.github.com/spec/v1، فأنت ترى مؤشر Git LFS الخاص به بدلاً من محتويات الملف الكبير. في Terminal، انتقل إلى المستودع، وتأكد من تثبيت Git LFS وتهيئته، ثم شغّل git lfs pull. يقوم هذا الأمر بتنزيل كائنات LFS للفرع الذي تم سحبه (checked-out) ويحدّث ملفات العمل. يمكنه فقط استعادة المحتوى المتاح من الخادم البعيد (remote) المكوّن أو الموجود بالفعل في ذاكرة التخزين المؤقت المحلية لـ LFS. الأسئلة الشائعة حول Git LFS
1. افتح المستودع في Terminal وتأكد من أن الملف عبارة عن مؤشر
افتح Terminal وانتقل إلى دليل المستودع. إذا لم تكن متأكدًا من مكان المجلد، فاكتب cd (بما في ذلك المسافة اللاحقة)، واسحب مجلد المستودع من Finder إلى نافذة Terminal، ثم اضغط على Return. تحقق من أنك داخل شجرة عمل Git وتفقد الملف، مع استبدال مساره الفعلي:
git status --short
head -n 3 'path/to/file.ext'
يحتوي المؤشر النموذجي على سطر للإصدار (version)، وسطر oid sha256:، وسطر للحجم (size). يخزن Git LFS هذا المؤشر الصغير في Git بينما يستقر المحتوى الفعلي في وحدة تخزين LFS. رؤية المؤشر في محرر نصوص لا تعني أن المحرر يمكنه استرداد الكائن المفقود؛ يتم الاسترداد من خلال Git LFS. نظرة عامة على Git LFS
2. تثبيت وتهيئة Git LFS إذا لزم الأمر
تحقق مما إذا كان الأمر متاحًا:
git lfs version
إذا أبلغ Terminal أن lfs ليس أمرًا من أوامر Git، فقم بتثبيت Git LFS باستخدام طريقة تثبيت موثوقة لجهاز Mac الخاص بك، ثم افتح نافذة Terminal جديدة وتحقق مرة أخرى. توثق وثائق المشروع أمر git lfs install كإعداد يُجرى لمرة واحدة لحساب المستخدم؛ شغّله لتكوين مرشحات (filters) وخطافات (hooks) Git الخاصة بـ LFS:
git lfs install
هذا الإعداد منفصل عن تنزيل محتويات الملفات. إذا تم تخطي LFS أثناء عملية clone أو checkout، فإن الأسئلة الشائعة لـ Git LFS توصي تحديدًا بتشغيل git lfs pull لاستبدال المؤشرات في شجرة العمل. الأسئلة الشائعة حول Git LFS
3. تنزيل واستعادة ملفات الفرع الحالي
من دليل المستودع، شغّل:
git lfs pull
يقوم هذا الأمر بجلب محتوى LFS للإشارة الحالية (current ref) من الخادم البعيد الافتراضي ويقوم بسحب ملفات شجرة العمل المطلوبة. إنها أبسط خطوة للاسترداد لعملية استنساخ عادية حيث ينتمي المؤشر إلى الفرع الذي قمت بسحبه. انتظر حتى ينتهي الأمر واقرأ أي أخطاء تظهر؛ فبقاء المؤشر بعد ذلك يعني أن التنزيل أو السحب (checkout) لم يكتمل لذلك الملف. مرجع أوامر Git LFS
إذا كنت قد جلبت الكائن مسبقًا ولكن ملف العمل لا يزال يحتوي على مؤشر، فجرّب:
git lfs checkout -- 'path/to/file.ext'
يستخدم git lfs checkout المحتوى المتاح في مخزن LFS المحلي؛ ولا يقوم بتنزيل أي شيء. فهو يستعيد الملفات المفقودة أو الملفات التي تحتوي على المؤشر المطابق، ولا يستبدل الملفات المعدلة. هذا يجعله مفيدًا بعد عملية جلب (fetch) ناجحة، ولكنه لا يمكنه استرداد كائن لم يتم تخزينه مؤقتًا محليًا أو لم يتم جلبه بنجاح. دليل git-lfs-checkout
4. إذا كان الملف لا يزال يظهر كمؤشر
تحقق مما إذا كان المسار المتوقع يتم تتبعه بواسطة LFS وما إذا كان للمستودع خادم بعيد (remote) تم تكوينه:
git lfs ls-files
git remote -v
إذا لم يسرد git lfs ls-files الملف، فتأكد من أن قواعد .gitattributes المثبتة (committed) في الفرع الحالي تحدد مساره لـ LFS. مجرد تشغيل git lfs track الآن لا يسترد المحتوى السابق، وتغيير قواعد التتبع لا يحول كائن Git الثنائي (blob) العادي إلى كائن LFS. تشير وثائق Git LFS إلى أن الملفات الموجودة بالفعل في المستودع تتطلب إعادة ضبط (renormalization) وتسجيل إيداع (commit) لتحويلها؛ فلا تقم بإجراء هذا التغيير في المستودع لمجرد استعادة ملف. الأسئلة الشائعة حول Git LFS
إذا كان الملف مدرجًا، فتأكد من أنك على الفرع الذي يحتوي على الإصدار المطلوب وأن الخادم البعيد المكوّن هو المستودع الذي يخزن كائنات LFS الخاصة به. إذا كان هناك خادم بعيد مختلف تم تكوينه، فقم بجلب ذلك الخادم البعيد ثم استعد من ذاكرة التخزين المؤقت المحلية:
git lfs fetch 'remote-name'
git lfs checkout -- 'path/to/file.ext'
يقوم git lfs fetch بتنزيل الكائنات ولكنه لا يحدّث نسخة العمل؛ بينما يقوم git lfs checkout بتنفيذ هذا التحديث المحلي. يؤدي جلب الإشارة الحالية افتراضيًا إلى استخدام الخادم البعيد الافتراضي، والذي يتبع قواعد Git لتحديد الخادم البعيد. دليل git-lfs-fetch
قد يشير فشل عملية السحب (pull) إلى مشكلة في الاتصال، أو المصادقة، أو أذونات الوصول، أو فقدان الكائن. قم بحل مشكلة الوصول إلى خادم Git/LFS المكوّن وأعد المحاولة. إذا لم يعد خادم LFS يحتوي على الكائن، فلن يتمكن المؤشر بمفرده من إعادة بناء الملف الأصلي: اسأل أحد مسؤولي صيانة المستودع عما إذا كان هناك فرع آخر أو نسخة احتياطية أو نسخة مستنسخة أو مخزن LFS معتمد يحتوي عليه. تجنب استبدال المؤشر بمحتوى تخميني أو إيداعه كما لو كان هو الملف المستعاد.
تأكيد الاسترداد
بعد نجاح السحب (pull) أو الإخراج (checkout)، افحص الملف مرة أخرى. يجب ألا تكون أسطره الأولى هي البيانات الوصفية لمؤشر LFS؛ استخدم التطبيق المناسب لنوع الملف للتأكد من فتح المحتوى المسترد. تحقق من git status --short أيضًا. قد يكون تغيير المحتوى أمرًا متوقعًا إذا كانت نسخة العمل لديك تحتوي على المؤشر، ولكن راجع المسار المذكور قبل تجهيز (staging) أو إيداع أي شيء.
المصادر
git-lfs-faq(7) — Git LFS
git-lfs(1) — Git LFS
git-lfs-checkout(1) — Git LFS
git-lfs-fetch(1) — Git LFS