Git’in içi ve kancalar
Nesne veritabanını, referansları ve paket dosyalarını açıp inceler; kancalarla kendi denetimlerini yazarsın.
Seviye 301 · 16 ders · 15 pratik lab
Dersler
Nesne modeli
- Blob, tree, commit ve tag nesneleri
- cat-file ve hash-object ile nesneleri elle okumak
- Referanslar, HEAD ve packed-refs
- İndeks dosyası: hazırlık alanının içi
- Paket dosyaları, gc ve fsck
- Kısa görev: üst düzey komut kullanmadan bir commit oluştur
Yapılandırma ve öznitelikler
- Yapılandırma katmanları ve includeIf
- .gitattributes: satır sonları, diff ve merge sürücüleri
- Takma adlar ve kendi git alt komutların
- Kısa görev: ikili dosyalar için okunur diff tanımla
Kancalar
- İstemci kancaları: pre-commit, commit-msg
- Commit öncesi gizli bilgi taraması
- Sunucu kancaları: pre-receive, update, post-receive
- core.hooksPath ile ekip kancalarını paylaşmak
- Kısa görev: kural dışı commit mesajlarını sunucuda reddet
Kapanış
- Bitirme görevi: bozuk bir depoyu nesne düzeyinde onar ve kancalarla koru
Pratik lablar
- Dosyayı nesnelerden oku: Verilen commit’teki bir dosyanın içeriğini checkout yapmadan cat-file ile commit → tree → blob zincirini izleyerek bul ve blob kimliğini rapora yaz.
- Etiketi elle oluştur: Porselen komutlarını kullanmadan bir açıklamalı etiket nesnesi oluştur, onu refs/tags altına bağla ve git show ile etiketin geçerli olduğunu göster.
- Değişiklikleri saklayan sahne alanı: Değiştirilmiş olduğu hâlde git status’ta görünmeyen dosyaları ls-files bayraklarıyla bul, assume-unchanged ve skip-worktree işaretlerini kaldır ve gerçek değişiklikleri göster.
- Bu ref nerede saklanıyor?: Depodaki dalların ve etiketlerin hangilerinin gevşek dosya, hangilerinin packed-refs içinde durduğunu bul ve her birini rev-parse ile çözerek tabloya yaz.
- Paketlemeden önce ve sonra: Rüzgârlı Enerji’nin şişmiş deposunun nesne sayısını ve boyutunu ölç, gc ve repack ile küçült ve öncesi/sonrası sayılarını count-objects çıktısıyla raporla.
- Bozuk HEAD ve kırık dal: İçeriği bozulmuş HEAD dosyasını ve var olmayan nesneyi gösteren dal ref’ini elle onar, doğru commit’i reflog’dan bul ve fsck’nin temiz çıktı verdiğini göster.
- Bu ayar nereden geliyor?: Commit’lerin yanlış editörle ve yanlış e-postayla açılmasına yol açan ayarları --show-origin ile bul, doğru seviyede düzelt ve sonucu git config --list ile göster.
- İş klasörüne ayrı kimlik: Yalnızca iş klasörü altındaki depolarda şirket e-postasını ve imza anahtarını kullanan includeIf yapılandırmasını kur ve iki farklı depoda commit atarak doğrula.
- Hep çakışan değişiklik günlüğü: Değişiklik günlüğü dosyası için her iki taraftaki satırları koruyan bir birleştirme sürücüsünü .gitattributes ile tanımla ve üç dalın günlüğü çakışmadan birleştirdiğini göster.
- Boşluk hatasını commit’ten önce yakala: Sahnelenmiş değişikliklerde satır sonu boşluğu veya çakışma işareti kalmışsa commit’i durduran bir pre-commit kancası yaz ve bir hatalı, bir temiz denemeyle test et.
- Anahtar sızmadan dur: Bulut erişim anahtarı ve özel anahtar kalıplarını arayan, izin listesindeki örnek değerleri geçiren bir pre-commit kancası yaz ve lab’daki sahte anahtarla engellediğini göster.
- Yalnızca sahnelenmiş içeriği denetleyen ekip kancası: Depoda paylaşılan kancalar klasörünü core.hooksPath ile etkinleştir ve denetleyiciyi yalnızca sahnelenmiş içerik üzerinde çalıştıran bir kanca yaz; kısmi sahnelemede doğru sonuç verdiğini kanıtla.
- Silinemeyen ana dal: Çıplak depoda ana dalın silinmesini ve zorla üzerine yazılmasını reddeden bir update kancası kur ve iki girişimin de reddedildiğini göster.
- Büyük dosyaya sunucu kapısı: Gönderilen commit’lerde belirlenen boyutun üstünde dosya varsa push’u reddeden ve dosya yolunu bildiren bir pre-receive kancası yaz ve test et.
- Push ile yayına alma: Oakmere Studios’un sitesi için yalnızca ana dala gelen push’ta dosyaları yayın klasörüne çıkaran ve kayıt tutan bir post-receive kancası kur; başka dala push’un yayına dokunmadığını kanıtla.
Kurs hakkında
Nesne veritabanını, referansları ve paket dosyalarını açıp inceler; kancalarla kendi denetimlerini yazarsın.
Ne öğreneceksin
- Nesne modeli
- Yapılandırma ve öznitelikler
- Kancalar
- Kapanış
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.