Git LFS (Büyük Dosya Depolama)

Git LFS (Large File Storage), resimler, videolar, veri setleri ve binary'ler gibi büyük dosyaları sürümlemek için bir Git uzantısıdır. Bu dosyaları doğrudan Git'te depolamak yerine, LFS işaretçileri depoda ve gerçek dosyaları uzak sunucuda depolar.

Git LFS Kurulumu

Windows

winget install GitLFS

Veya git-lfs.github.com adresinden indirin

macOS

brew install git-lfs

Linux

sudo apt-get install git-lfs

Başlatma

git lfs install

gityar ile Git LFS Kullanımı

Dosya Türlerini İzleme

Git'e hangi dosyaları LFS ile izleyeceğini söyleyin:

# Tüm PSD dosyalarını izle
git lfs track "*.psd"

# Tüm MP4 dosyalarını izle
git lfs track "*.mp4"

# Bir dizindeki tüm dosyaları izle
git lfs track "assets/*"

# Belirli büyük dosyayı izle
git lfs track "dataset.csv"

Bu .gitattributes dosyasını oluşturur veya günceller:

*.psd filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text

Commit ve Push

# .gitattributes ekle
git add .gitattributes

# Büyük dosyalarınızı ekleyin
git add large-file.psd

# Commit
git commit -m "LFS ile büyük dosya ekle"

# Push (LFS dosyaları otomatik yüklenir)
git push origin main

LFS Dosyalarını Yönetme

İzlenen Dosyaları Listele

git lfs track

Depodaki LFS Dosyalarını Listele

git lfs ls-files

LFS Durumunu Görüntüle

git lfs status

LFS Dosyalarını Çek

# Tüm LFS dosyalarını çek
git lfs pull

# Belirli branch'i çek
git lfs pull origin feature-branch

LFS Dosyalarını Getir

git lfs fetch --all

gityar'da LFS Ayarları

LFS'yi Etkinleştir

LFS, gityar'da varsayılan olarak etkindir. Doğrulamak için:

  1. Depo Ayarları gidin
  2. "Git LFS'yi Etkinleştir" işaretli olduğunu kontrol edin

LFS Depolama

LFS dosyaları şurada depolanır:

data/lfs/

Depolama Limitleri

app.ini içinde depolama limitlerini yapılandırın:

[repository.upload]
LFS_MAX_FILE_SIZE = 104857600  # 100MB
LFS_MAX_STORAGE = 10737418240  # Depo başına 10GB

LFS'ye Taşıma

Mevcut Dosyaları LFS'ye Dönüştür

git lfs migrate kullanın:

# Tüm PSD dosyalarını taşı
git lfs migrate import --include="*.psd"

# Birden fazla dosya türünü taşı
git lfs migrate import --include="*.psd,*.mp4,*.zip"

# Geçmişi de taşı ve yeniden yaz
git lfs migrate import --include="*.psd" --everything

⚠️ Uyarı: Geçmişi yeniden yazmak commit hash'lerini değiştirir!

Taşıma Sonrası Push

git push --force

En İyi Uygulamalar

Ne Zaman LFS Kullanılır

  • ✅ 50MB'dan büyük dosyalar
  • ✅ Binary dosyalar (resimler, videolar, ses)
  • ✅ Veri setleri ve arşivler
  • ✅ Derlenmiş binary'ler
  • ✅ Tasarım dosyaları (PSD, AI, Sketch)

Ne Zaman LFS Kullanılmaz

  • ❌ Kaynak kod dosyaları
  • ❌ Yapılandırma dosyaları
  • ❌ Belgeler
  • ❌ Küçük metin dosyaları
  • ❌ Diff uygulanması gereken dosyalar

Genel İpuçları

  • Tekil dosyaları değil, dosya uzantılarını izleyin
  • .gitattributes dosyasını güncel tutun
  • LFS depolama kullanımını izleyin
  • Kullanılmayan LFS dosyalarını düzenli temizleyin
  • LFS kullanımını takımınız için belgeleyin

Sorun Giderme

Yaygın Sorunlar

"LFS nesneleri bulunamadı":

git lfs fetch --all
git lfs checkout

"Yetersiz disk alanı":

  • LFS önbelleğini temizleyin: git lfs prune
  • Depolama limitlerini artırın
  • Gereksiz LFS dosyalarını kaldırın

"Kimlik doğrulama başarısız":

  • Kimlik bilgilerini doğrulayın
  • LFS endpoint URL'sini kontrol edin
  • LFS'nin etkin olduğundan emin olun

Yavaş clone/pull:

  • Sığ clone kullanın: git clone --depth 1
  • LFS'yi atlayın: GIT_LFS_SKIP_SMUDGE=1 git clone
  • LFS'yi sonra çekin: git lfs pull

LFS İşaretçilerini Kontrol Et

Dosyalar gerçek içerik yerine işaretçi olarak görünüyorsa:

# LFS dosyalarını indir
git lfs pull

# Dosyayı doğrula
git lfs fsck

LFS Önbelleğini Temizle

Eski LFS nesnelerini kaldırın:

# Nelerin silineceğini önizle
git lfs prune --dry-run

# Eski nesneleri sil
git lfs prune

LFS Komut Referansı

Komut Açıklama
git lfs install LFS'yi başlat
git lfs track Dosya kalıplarını izle
git lfs ls-files LFS dosyalarını listele
git lfs status LFS durumunu göster
git lfs pull LFS dosyalarını indir
git lfs fetch LFS nesnelerini getir
git lfs push LFS nesnelerini push et
git lfs prune Eski nesneleri temizle
git lfs migrate Dosyaları LFS'ye taşı
git lfs fsck LFS nesnelerini doğrula

Sonraki Adımlar