Git 2.54, yalnızca performans odaklı bir güncelleme değil. Bu sürüm, günlük kullanımda sık karşılaşılan bazı küçük ama önemli iş akışı sorunlarını hedefleyen yeni özellikler de içeriyor. Sürüm notlarını inceledik ve öne çıkan değişiklikleri bir araya getirdik.

1. git history: Sadece Mesaj Düzeltmek İçin Rebase Çilesine Son

Geçmişi düzenlemek (history rewriting) çoğu zaman biraz korkutucu olmuştur. Sadece son commit değil de, 3-4 commit gerideki bir yazım hatasını düzeltmek için bile o karmaşık rebase -i ekranını açmak zorunda kalıyorduk.

Yenilik: Yeni ve deneysel git history komutu, özellikle reword alt komutuyla bu işi çocuk oyuncağına çeviriyor.

Senaryo: Sadece bir commit mesajını düzeltmek mi istiyorsunuz? Artık o devasa rebase listesiyle boğuşmanıza gerek yok. Ayrıca split alt komutuyla devasa bir commit’i parçalara ayırmak hiç bu kadar sezgisel olmamıştı.

2. git add -p: Artık Geçtiğiniz Hunk’ı Hatırlıyor

Temiz commit’ler oluşturmak için kullandığımız patch mode artık daha kullanıcı dostu.

Yenilik: Eskiden bir kod parçasını (hunk) yanlışlıkla n ile geçtiğinizde geri dönmek zordu. Şimdi git add -p size geçtiğiniz dosyalara veya hunk’lara geri dönme imkanı tanıyan yeni bir mod sunuyor.

Somut Fayda: "Eyvah, yanlış tuşa bastım, her şeye baştan başlamalıyım!" stresi tarihe karışıyor. Git artık nerede kaldığınızı ve neyi geçtiğinizi biliyor.

3. Merkezi Hook Dönemi: Bir Kez Yaz, Her Yerde Çalışsın!

Her yeni projeye başladığınızda o meşhur pre-commit ya da commit-msg betiğini .git/hooks klasörüne kopyalamaktan yorulmadınız mı?

Yenilik: Git 2.54 ile artık hook (tetikleyici) komutlarını doğrudan ~/.gitconfig (global yapılandırma) dosyanızda tanımlayabiliyorsunuz. Üstelik aynı olay (event) için birden fazla hook çalıştırabilirsiniz.

Neden Önemli? Şirket içi standartlarınızı veya kişisel otomasyonlarınızı bir kez globalde tanımlayıp tüm repo’larınızda otomatik olarak aktif olmasını sağlayabilirsiniz. Böylece aynı hook betiklerini her repository için yeniden kopyalama ihtiyacı ortadan kalkıyor.

4. "Hangi Daldaydım, Hangisiyle Kıyaslıyordum?"

Özellikle birden fazla özellik (feature) dalı arasında mekik dokurken, mevcut durumunuzu ana dallarla (main, develop vb.) kıyaslamak istersiniz.

Yenilik: git status artık status.compareBranches yapılandırması sayesinde, belirlediğiniz dallarla aranızdaki farkı (ahead/behind durumunu) otomatik olarak raporlayabiliyor.

Pratik Faydası: Her seferinde manuel olarak kıyaslama komutları yazmanıza gerek kalmadı. Sadece git status yazın ve güncel kalın.

5. GPG İmzalarında "Kırmızı Alarm" Karmaşası Bitti

Güvenliğe önem veren ekiplerde her commit’in imzalanması istenir. Ancak eski bir commit’in imzalandığı anahtarın süresi dolduğunda, Git bunu kırmızı renkle bir hata gibi gösteriyordu.

Yenilik: Git artık anahtarın şu anki durumuna değil, imzalandığı andaki geçerliliğine bakıyor.

Sonuç: Daha temiz bir git log çıktısı ve "anahtarın süresi doldu ama commit hala güvenli mi?" endişesinin sonu.

Detaylardaki Güç: Gözden Kaçmaması Gerekenler

Ana özelliklerin gölgesinde kalan ama "İşte bu çok iyi olmuş!" dedirten birkaç küçük dokunuş daha var:

  • Türkçe Alias Dönemi Artık alias tanımlarken ASCII sınırlarına takılmanıza gerek yok.
    [alias "getir"] command = fetch
    gibi tanımlamalar artık geçerli. Kendi dilinizde komutlar oluşturmak veya yaratıcı alias'lar kullanmak artık çok daha özgür.
  • Toplu Etiketleme (Trailer): Bir commit serisindeki tüm commit’lere aynı anda Reviewed-by: İsim veya Signed-off-by: eklemek mi istiyorsunuz? Artık git rebase --trailer bayrağı ile bu işlemi tek hamlede yapabilirsiniz.
  • Akıllı Kod Analizi: Belirli bir kod bloğunun geçmişini incelediğimiz git log -L komutu artık -S ve -G (içerik arama) seçenekleriyle uyumlu çalışıyor. Yani belirli bir fonksiyonun geçmişine bakarken aynı zamanda içinde spesifik bir kelime araması da yapabiliyorsunuz.
  • Yol Gösteren Mesajlar: Git’in bazen kafa karıştıran "belirsizlik" mesajları düzeliyor. Örneğin, bir dal ismini yanlış yazdığınızda Git artık sizi checkout yerine modern git switch komutuna yönlendiriyor.

Eğlenceli Bir Not: Eğer 2514 yılından bir commit atmayı planlıyorsanız müjde! Git 2.54 ile bu tarihteki zaman aşımı hatası giderildi. Yani Git, önümüzdeki 500 yıl boyunca sizi yarı yolda bırakmayacak şekilde hazır.

İleri Seviye Kullanıcılar İçin Diğer Yenilikler

  • Geometrik Bakım Stratejisi: Devasa monorepo'larda disk performansını optimize eden "geometric" paketleme artık varsayılan.
  • HTTP 429 (Too Many Requests) Desteği: CI/CD otomasyonlarınız artık sunucu limitlerine takıldığında durması yerine, akıllıca beklemeyi biliyor.
  • Rust Geçişi Başladı: Git'in bazı kritik bileşenleri (hash eşleme kodları gibi) artık Rust ile yazılıyor. Bu, gelecekte çok daha hızlı ve güvenli bir Git deneyiminin habercisi.

Özetle Diğerleri

Bu sürümde bunların yanı sıra; git send-email'e istemci tarafı sertifika desteği, git backfill'e dosya yolu (pathspec) argümanları ve gitweb'e mobil uyumlu arayüz gibi onlarca küçük iyileştirme daha yer alıyor. Eğer tüm teknik detaylara hakim olmak isterseniz, resmi sürüm notlarını inceleyebilirsiniz.