هلا يا قوم 🤍
فيه حاجة قابلتني من يومين وعجبتني أوي، بس اكتشفت إنها موجودة من سنين! فهعمل حساب إن محدش يعرفها زيي وأنزلها... أما بقى لو عارفها، فاعمل سكيب للبوست ده كأنك مشوفتوش 🫣.
📦 المشكلة: ليه حجم الـ Repo بيكبر جداً؟
طبعاً كلنا عارفين دور Git في حفظ التعديلات (Commits)، وإن كل Commit بالتعديلات بتتحفظ عندك Local، وده معناه إن حجم الـ Repo بيكبر مع الوقت؛ لأنك لو حبيت تعمل Checkout على أي Commit قديم، لازم Git يكون حافظ التعديلات دي عشان يرجعك ليها.
💡 مثال توضيحي:
- لو نزلت Linux Kernel من موقع
kernel.orgكملف مضغوط، هتلاقي حجمه بعد فك الضغط حوالي 700 ميجا فقط. - لكن لو عملت
git cloneلنفس الـ Kernel من الريبو الرسمي لـ Linus Torvalds على GitHub، هتتفاجئ إن الحجم يوصل لأكثر من 14 جيجابايت!
والسبب: أن الـ Repo شايل تاريخ التعديلات كلها والتعديلات نفسها في مجلد .git (واللي فيه حوالي مليون ونص Commits!).
تخيل بقى لو المشروع بتاعك مش كود بس، وفيه ملفات تقيلة زي فيديوهات أو صور بجودة عالية أو ملفات 3D/Design... حجم الـ Repo هيكبر بشكل ضخم جداً وغير عملي!
🚀 الحل السحري: Git LFS (Large File Storage)
الفكرة ببساطة: بدل ما Git يخزن الملفات الكبيرة نفسها جوه الـ Repository، بيخزن مكانها Pointer (مؤشر) صغير جداً بيشاور على الملف الحقيقي المتخزن على سيرفر مخصص للـ LFS.
⚡ مميزات أداة Git LFS:
- توفير مساحة الـ Repo: مجلد
.gitعندك بيحتوي على Pointers فقط للملفات الكبيرة. - التحميل عند الطلب: لما تنزل مشروع أو تروح لـ Commit معين، Git LFS هو اللي ينزلك الملفات الكبيرة المحددة دي وقتها بس.
- حل قيود الحجم على GitHub: بما إن GitHub يمنع رفع أي ملف يزيد حجمه عن 100 Megabytes، فـ Git LFS يحل المشكلة دي تماماً ويسمح لك برفع الملفات الضخمة.
- دعم متكامل: Git LFS هي أداة رسمية متوافقة مع Git ومقبولة في GitHub و GitLab و Bitbucket وأي سيرفر خاص.
لو بتشتغل على مشاريع فيها Data Models، فيديوهات، أو ملفات Build تقيلة، Git LFS هيوفر عليك مساحة ووجع دماغ كبير 👀.
📖 التوثيق وشرح الاستخدام بالتفصيل
الدليل الشامل وشرح خطوات التثبيت والأوامر وطريقة الاستخدام (Cheat Sheet) متاح هنا:
👉 دليل استخدام Git LFS للملفات الكبيرة بالتفصيل
بالتوفيق ⚡️
Comments
Loading the discussion…