CodeBlanks Logo Icon CodeBlanks

LFS nedir?

Git LFS ile büyük dosya yönetimini öğrenirsin.

Git LFS nedir?

Git normalde her dosyanın tüm geçmiş sürümlerini .git klasöründe saklar. Büyük ikili dosyalar (videolar, makine öğrenmesi modelleri, grafikler) eklendikçe depo boyutu hızla şişer ve klonlama çok yavaşlar. Git LFS (Large File Storage), büyük dosyaların gerçek içeriğini harici bir LFS sunucusunda saklayarak bu sorunu çözer.

version https://git-lfs.github.com/spec/v1
oid sha256:4b3f8a...c12a
size 104857600

Git deposunda dosyanın kendisi yerine yalnızca SHA-256 özeti ve boyutunu içeren küçük bir işaretçi (pointer) tutulur.

İşaretçi (pointer) dosyası anatomisi

İşaretçi dosyası metin tabanlıdır ve yaklaşık 130 bayt boyutundadır. İçinde dosya format sürümü (version), benzersiz SHA-256 hash değeri (oid sha256) ve bayt cinsinden dosya boyutu (size) yer alır. Sen checkout yaptığında LFS bu işaretçiyi okur ve gerçek dosyayı indirip çalışma alanına koyar.

git lfs pointer --file=model.bin

Böylece geliştiriciler tüm geçmiş sürümleri değil, yalnızca üzerinde çalıştıkları güncel büyük dosyayı indirir.

Uygulama İşaretçi dosyasını yapılandır

pointer.txt dosyasına oid sha256:e3b0c442 ve size 1024 satırlarını ekleyerek işaretçi yapısını tamamla.

Başlangıç kodu

terminal
cat << 'EOF' > pointer.txt
version https://git-lfs.github.com/spec/v1
# oid sha256 ve size tanimla
EOF

cat pointer.txt

Örnek çözüm

terminal
cat << 'EOF' > pointer.txt
version https://git-lfs.github.com/spec/v1
oid sha256:e3b0c442
size 1024
EOF

cat pointer.txt

Beklenen çıktı

version https://git-lfs.github.com/spec/v1
oid sha256:e3b0c442
size 1024

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Git LFS kullanıldığında büyük dosyalar yerel Git deposunda nasıl saklanır?

  • Dosyalar çalışma dizininden tamamen gizlenir
  • Dosyalar sıkıştırılarak .zip arşivi halinde saklanır
  • Gerçek dosya yerine SHA-256 ve boyut içeren küçük bir işaretçi tutulur Doğru cevap
  • Dosyanın yalnızca ilk 100 satırı tutulur, gerisi silinir

Açıklama: Git LFS, büyük dosyanın gerçek verisini harici depolamada tutarken depoda yalnızca hafif bir işaretçi dosyası saklar.

2 LFS işaretçi metnini üret

Soru
git lfs ____ --file=veri.bin
Cevap
git lfs pointer --file=veri.bin

Açıklama: git lfs pointer --file=<dosya> komutu, belirtilen dosyanın LFS işaretçi metnini üretir.

3 LFS kavramları

Kavram Anlamı
Git LFS Büyük ikili dosyaları verimli saklar
Pointer dosyası SHA-256 ve boyut içeren küçük metin
Depo boyutu Şişmeden hafif ve hızlı kalır
oid sha256 Büyük dosyanın benzersiz hash'idir

Uzman bölümündeki tüm dersler