Object database
- Git kursu
- Uzman
- Ders 2/32
- 4 dk
Blob, tree ve commit nesnelerini öğrenirsin.
Git object database nedir?
Git, dosya içeriklerini ve geçmiş bilgilerini nesne veritabanında saklar. Bu veritabanı .git/objects dizininde bulunur. Git nesneleri içeriklerine göre hash değerleriyle tanımlanır; aynı içeriğe sahip nesneler aynı kimliği alabilir.
.git/objects/
├── 1a/
├── 4f/
└── info/Nesneler genellikle sıkıştırılmış biçimde tutulur ve Git tarafından gerektiğinde okunur.
Blob, tree ve commit nesneleri
Blob nesnesi dosya içeriğini, tree nesnesi dizin yapısını ve dosya adlarıyla nesne bağlantılarını temsil eder. Commit nesnesi ise bir tree nesnesine, yazar ve tarih bilgilerine, commit mesajına ve varsa ebeveyn commit bağlantılarına sahiptir.
Commit
└── Tree
├── Blob (index.html)
└── Blob (style.css)Bu yapı sayesinde Git, bir projenin belirli bir andaki dosya ağacını ve geçmişini yeniden oluşturabilir.
Uygulama Dosya içeriğinin nesne kimliğini bul
Bir dosyanın içeriğini Git nesne veritabanına yazmadan hash değerini hesapla. hash-object komutunun -w seçeneğini kullanma; bu görevde amaç yalnızca nesne kimliğini görüntülemektir.
Başlangıç kodu
# Dosya içeriğinin hash değerini hesaplaBeklenen çıktı
8f3a2b1c4d5e6f708192a3b4c5d6e7f8091a2b3c
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Git nesne veritabanında bir dosyanın ham içeriğini hangi nesne türü saklar?
- Tree
- Commit
- Ref
- Blob Doğru cevap
Açıklama: Blob nesnesi dosya içeriğini saklar; dosya adı veya dizin yapısını tek başına taşımaz.
2 Dizin yapısını temsil eden nesne
Blob dosya içeriğini saklar. Dizin yapısını ve dosya bağlantılarını temsil eden nesne ise tree nesnesidir.____
Blob dosya içeriğini saklar. Dizin yapısını ve dosya bağlantılarını temsil eden nesne ise tree nesnesidir.tree
Açıklama: Tree nesnesi, dizin girdilerini ve bunların blob veya başka tree nesneleriyle bağlantılarını tutar.
3 Git nesne türleri
| Kavram | Anlamı |
|---|---|
Blob |
Dosya içeriğini saklar |
Tree |
Dizin ve dosya bağlantılarını tutar |
Commit |
Bir anlık proje durumunu kaydeder |
Hash |
Nesneyi içerik üzerinden tanımlar |