Nesne gezgini
Git'in karmaşık olduğu yönünde bir ünü vardır. Bunun neredeyse tamamı modeli hiç görmemekten gelir: dört tür nesne ve işaretçiler. Bir commit'e tıklayıp ağacına indiğinizde ve dosyanızın aslında bir ağaç tarafından ad verilmiş bir blob olduğunu gördüğünüzde, üst düzey komutlar sihir olmaktan çıkar.
⌘K → Nesne gezgini. Bu sayfadaki hiçbir şey tek bir bayt değiştiremez —
arkasındaki her çağrı bir okumadır.

Dört nesne
| Nesne | Nedir | Ne bilir |
|---|---|---|
| blob | Bir dosyanın içeriği | Hiçbir şey. Ne adını, ne yolunu, ne geçmişini |
| tree | Bir dizin listesi | Adlar, modlar ve her alt blob ya da ağacın sha'sı |
| commit | Tek bir anlık görüntü | Ağacı, ebeveynleri, yazar, commit'leyen, mesaj |
| tag | Açıklamalı bir etiket | İşaret ettiği nesne, etiketleyen, bir mesaj |
Çoğu kişi için sürpriz olan ilk satırdır. Bir blob'un adı yoktur. Geçmişinizin herhangi bir yerinde içeriği aynı olan iki dosya, bir kez saklanan aynı blob'dur. Ad, ona işaret eden ağaçta yaşar — git'in dosyaları değil içeriği izlemesinin ve yeniden adlandırmaların kaydedilmek yerine tespit edilmesinin sebebi budur.
Bir ref — refs/heads/main, refs/tags/v1.0, HEAD — bir sha içeren bir
dosyadan ibarettir. "Dallanma ucuzdur" cümlesinin tamamı budur.
Dolaşmak
Sol sütun, depodaki her ref'i git'in grupladığı şekilde gruplayarak listeler. Birine tıklayın, adlandırdığı nesneye inin.
Oradan sonra her şey bir bağlantıdır:
- Bir commit kendi
tree'sini ve herparent'ını gösterir — anlık görüntüye geçin ya da geçmişte commit commit geriye doğru yürüyün. - Bir tree girdilerini mod, tür, sha ve boyutla listeler. O alt öğeyi açmak için bir ada tıklayın.
- Bir blob metnini gösterir (büyük olanlarda baş kısmını) ya da ikili olduğunu açıkça söyler.
- Bir açıklamalı etiket neye işaret ettiğini gösterir — commit'e geçmek için tıklayın.
Geri adımlarınızı geri sarar.
Bir revizyon yazmak
Kutu, git rev-parse kabul eden her şeyi alır; işte bu, onu bir gezgin olmaktan
çıkarıp öğrenme aracına dönüştüren yerdir:
| Şunu yazın | Şunu alın |
|---|---|
HEAD |
Geçerli commit |
HEAD~3 |
Üç commit geri |
HEAD^{tree} |
O commit'in ağacı, soyulmuş hâlde |
HEAD:src/app.ts |
O yola ait blob, doğrudan |
v1.0^{} |
Etiket nesnesi yerine açıklamalı bir etiketin işaret ettiği şey |
a1b2c3d |
Sha ile herhangi bir nesne — kısaltmalar çalışır |
Bir ağaç listesindeki mod rakamlarını bilmek işe yarar: 100644 bir dosya,
100755 çalıştırılabilir, 040000 bir alt ağaç, 120000 bir sembolik bağ,
160000 bir alt modül gitlink'i — ki bu sonuncusu, bir alt modülün sakladığı
şeyin tamamıdır.
Bilmeye değer sınırlar
- Bilerek salt okunur. Burada yazacak bir şey yok. Elle nesne üretmek bir
git hash-objectalıştırmasıdır ve yeri terminaldir. - Büyük blob'lar ilk 200 KB'den sonra kesilir — ne olduğunu görmeye yetecek kadar, pencereyi kilitlemeyecek kadar.
- Boyutlar,
git cat-file -sbildirdiği hâliyle nesnenin içerik boyutudur; paketlendikten sonra diskte tuttuğu yer değil. Onun için bakım sayfasına bakın. - Erişilemeyen nesneler de nesnedir. Bir
git fscksarkan nesne raporundan bir sha yapıştırın, açılır; kaybolan bir commit'in ne içerdiğini kurtarmaya karar vermeden önce görmenin en hızlı yolu genellikle budur.
Ayrıca bakınız: Grafik · Depo bakımı · Kurtarma