LFS nedir?
- Git kursu
- Uzman
- Ders 9/32
- 4 dk
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 104857600Git 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.binBö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
cat << 'EOF' > pointer.txt
version https://git-lfs.github.com/spec/v1
# oid sha256 ve size tanimla
EOF
cat pointer.txtÖrnek çözüm
cat << 'EOF' > pointer.txt
version https://git-lfs.github.com/spec/v1
oid sha256:e3b0c442
size 1024
EOF
cat pointer.txtBeklenen çı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
git lfs ____ --file=veri.bin
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 |