Git LFS (Large File Storage) یک افزونه Git برای نسخهبندی فایلهای بزرگ مثل تصاویر، ویدیوها، مجموعه دادهها و باینریها است. به جای ذخیره مستقیم این فایلها در Git، LFS اشارهگرها را در مخزن و فایلهای واقعی را روی سرور از راه دور ذخیره میکند.
winget install GitLFS
یا از git-lfs.github.com دانلود کنید
brew install git-lfs
sudo apt-get install git-lfs
git lfs install
به Git بگویید کدام فایلها را با LFS ردیابی کند:
# ردیابی تمام فایلهای PSD
git lfs track "*.psd"
# ردیابی تمام فایلهای MP4
git lfs track "*.mp4"
# ردیابی تمام فایلها در یک پوشه
git lfs track "assets/*"
# ردیابی فایل بزرگ خاص
git lfs track "dataset.csv"
این فایل .gitattributes را ایجاد یا بهروز میکند:
*.psd filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
# افزودن .gitattributes
git add .gitattributes
# افزودن فایلهای بزرگ
git add large-file.psd
# Commit
git commit -m "افزودن فایل بزرگ با LFS"
# Push (فایلهای LFS بهطور خودکار آپلود میشوند)
git push origin main
git lfs track
git lfs ls-files
git lfs status
# Pull تمام فایلهای LFS
git lfs pull
# Pull branch خاص
git lfs pull origin feature-branch
git lfs fetch --all
LFS بهطور پیشفرض در گیتییار فعال است. برای تأیید:
فایلهای LFS ذخیره میشوند در:
data/lfs/
محدودیتهای ذخیرهسازی را در app.ini پیکربندی کنید:
[repository.upload]
LFS_MAX_FILE_SIZE = 104857600 # 100MB
LFS_MAX_STORAGE = 10737418240 # 10GB برای هر مخزن
از git lfs migrate استفاده کنید:
# مهاجرت تمام فایلهای PSD
git lfs migrate import --include="*.psd"
# مهاجرت انواع فایل متعدد
git lfs migrate import --include="*.psd,*.mp4,*.zip"
# مهاجرت و بازنویسی تاریخچه
git lfs migrate import --include="*.psd" --everything
⚠️ هشدار: بازنویسی تاریخچه hash های commit را تغییر میدهد!
git push --force
.gitattributes را بهروز نگه دارید"اشیاء LFS یافت نشد":
git lfs fetch --all
git lfs checkout
"فضای دیسک ناکافی":
git lfs prune"احراز هویت ناموفق":
clone/pull کند:
git clone --depth 1GIT_LFS_SKIP_SMUDGE=1 git clonegit lfs pullاگر فایلها به جای محتوای واقعی به عنوان اشارهگر نشان داده میشوند:
# دانلود فایلهای LFS
git lfs pull
# تأیید فایل
git lfs fsck
حذف اشیاء قدیمی LFS:
# پیشنمایش آنچه حذف خواهد شد
git lfs prune --dry-run
# حذف اشیاء قدیمی
git lfs prune
| دستور | توضیح |
|---|---|
git lfs install |
مقداردهی اولیه LFS |
git lfs track |
ردیابی الگوهای فایل |
git lfs ls-files |
لیست فایلهای LFS |
git lfs status |
نمایش وضعیت LFS |
git lfs pull |
دانلود فایلهای LFS |
git lfs fetch |
Fetch اشیاء LFS |
git lfs push |
Push اشیاء LFS |
git lfs prune |
پاکسازی اشیاء قدیمی |
git lfs migrate |
مهاجرت فایلها به LFS |
git lfs fsck |
تأیید اشیاء LFS |