Git LFS حل مشكلة حجم الريبو الكبير

x32x01
  • بواسطة x32x01 ||
فيه حاجة اكتشفتها من يومين وفرحتني جدًا 😍
وبالرغم إنها موجودة من سنين… حسيت إني لسه مكتشف كنز 😂
فلو انت عارفها خلاص اعمل سكيب كأنك مشوفتش حاجة 🫣

ليه حجم الـ Git Repository بيكبر مع الوقت؟ 🤔​

كلنا عارفين إن Git بيحفظ كل التعديلات على شكل commits.
وكل commit بيتخزن عندك Local جوه فولدر اسمه: .git
وده معناه إن:
  • كل تعديل اتحفظ
  • كل نسخة قديمة موجودة
  • تقدر ترجع لأي commit قديم
بس في المقابل 👇
حجم الريبو بيكبر جدًا مع الوقت.



مثال مرعب من Linux Kernel 😅​

لو نزلت Linux Kernel من الموقع الرسمي هتلاقي الحجم بعد فك الضغط حوالي 700 ميجا تقريبًا.
لكن لو عملت clone للريبو من GitHub 👀
هتتفاجئ إن الحجم ممكن يوصل لأكتر من 14 جيجا!
ليه؟
لأن الريبو شايل:
  • تاريخ كامل
  • أكتر من مليون ونص commit
  • كل التعديلات محفوظة جوه .git
يعني مش بتنزل الكود الحالي بس… بتنزل تاريخ 20+ سنة تطوير 🔥



المشكلة الحقيقية… لما يكون عندك ملفات تقيلة 😬​

المثال اللي فات كان كود بس.
تخيل بقى إن مشروعك فيه:
  • فيديوهات بجودة عالية 🎥
  • صور RAW 📷
  • موديلات AI 🧠
  • ملفات Build ضخمة
وكل شوية بتعدل عليهم…
كل تعديل = نسخة جديدة في Git
والنتيجة؟
الريبو هيكبر بشكل مش عملي خالص.



الحل السحري: Git LFS 👌🚀​

هنا بقى ييجي دور Git LFS (Large File Storage).
الفكرة بسيطة جدًا 👇
بدل ما Git يخزن الملف الكبير نفسه جوه الريبو،
بيخزن Pointer صغير بيشاور على مكان الملف الحقيقي.
والملف الحقيقي بيتخزن على سيرفر مخصص للـ LFS.
لو فتحت ملف متخزن بـ LFS على GitHub هتلاقيه مكتوب: Stored with Git LFS



Git LFS بيشتغل إزاي عمليًا؟ 💻​

1️⃣ تثبيت Git LFS​

Code:
git lfs install

2️⃣ تحديد نوع الملفات اللي عايز تخزنها بـ LFS​

مثلاً لو عندك ملفات mp4: git lfs track "*.mp4"
هيضيف سطر في ملف: .gitattributes

3️⃣ تضيف وتعمل commit عادي جدًا​

Code:
git add .
git commit -m "Add video files with LFS"
git push origin main
من اللحظة دي 👇
Git هيخزن Pointer في الريبو
والملف الحقيقي يترفع على LFS Server.



الفرق في الحجم هيكون قد إيه؟ 😮​

بدل ما الريبو يبقى 5 أو 10 جيجا… ممكن يبقى 200 أو 300 ميجا بس.
لأن .git بقى فيه:
  • Pointers صغيرة
  • مش ملفات ضخمة
ولما تعمل checkout على commit معين
Git LFS بس هو اللي ينزل النسخة المطلوبة وقتها.



مشكلة GitHub مع الملفات الكبيرة 🚫​

GitHub أصلًا مش بيقبل ترفع ملف أكبر من: 100MB
فلو حاولت ترفع ملف أكبر هتاخد error.
Git LFS بيحل المشكلة دي من الأساس 👌



Git LFS مش خاص بـ GitHub بس 🌍​

مهم تعرف إن Git LFS:
  • مش خدمة خاصة بـ GitHub
  • هو Extension لـ Git نفسه
تقدر تستخدمه مع:
  • GitLab
  • Bitbucket
  • سيرفر Git داخلي في شركتك



امتى تستخدم Git LFS؟ 🧠​

لو شغلك فيه:
  • Machine Learning Models
  • Datasets ضخمة
  • صور عالية الجودة
  • ملفات build تقيلة
  • مشاريع Games فيها Assets كبيرة
يبقى Git LFS هيوفر عليك مساحة ووجع دماغ كبير جدًا.



الفرق التقني بين Git العادي و Git LFS 📊​

Git العاديGit LFS
يخزن الملف كامل في كل commitيخزن Pointer بس
حجم الريبو بيكبر جدًاالحجم ثابت تقريبًا
مشاكل مع الملفات >100MBيحل المشكلة

ملحوظة مهمة جدًا ⚠️​

Git LFS مش معناه إنك ترمي أي حاجة وخلاص.
لازم:
  • تختار أنواع ملفات معينة
  • متحطش ملفات Build مؤقتة
  • تستخدم .gitignore صح
مثال .gitignore بسيط:
Code:
node_modules/
dist/
build/



خلاصة الكلام 💬​

لو مشروعك فيه ملفات تقيلة ومش عايز الريبو يكبر بطريقة مرعبة…
يبقى لازم تتعلم تستخدم Git LFS.
هيوفر عليك:
  • مساحة
  • وقت
  • مشاكل push
  • وجع دماغ في المستقبل
ولو عايز تقرأ شرح أوسع من هنا
 
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
61
x32x01
x32x01
x32x01
الردود
0
المشاهدات
141
x32x01
x32x01
x32x01
الردود
0
المشاهدات
674
x32x01
x32x01
x32x01
الردود
0
المشاهدات
702
x32x01
x32x01
x32x01
الردود
0
المشاهدات
93
x32x01
x32x01
الوسوم : الوسوم
.git .gitattributes .gitignore git lfs github large file storage إدارة الإصدارات تخزين الملفات الكبيرة حجم الريبو مشاريع machine learning
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,332
المشاركات
2,545
أعضاء أكتب كود
567
أخر عضو
Mohaned
عودة
أعلى