12 puan yazan GN⁺ 2025-11-11 | 1 yorum | WhatsApp'ta paylaş
  • Terminal tabanlı Git UI aracı lazygit, komut satırının sadeliği ile grafik arayüzün sezgiselliğini birleştirerek hızlı ve tutarlı bir çalışma ortamı sunuyor
  • Tutarlılık, keşfedilebilirlik ve etkileşimlilik odağında tasarlandığı için, yeni başlayanlar da temel Git kavramlarını biliyorsa hemen kullanabiliyor
  • vim tarzı tuş atamaları ve net görsel yapı sayesinde hızlı gezinme ve tekrar eden işleri kısaltma imkanı veriyor
  • Satır bazında patch, interactive rebase, cherry-pick gibi karmaşık Git işlemlerini sadeleştirerek verimliliği artırıyor
  • Go ile yazılmış açık kaynak bir TUI framework'ü tabanlı yapısıyla, diğer geliştirici araçlarının UX tasarımında da referans alınabilecek bir örnek oluşturuyor

LazyGit'in ortaya çıkış arka planı

  • Yazar, Neovim üzerinde deney yaparken tesadüfen lazygiti çalıştırdı ve aracın verimliliğini fark etti
    • Sonrasında tüm Git iş akışını lazygite taşıdı
  • Daha önce git gui, gitk ve CLI'yi birlikte kullanıyordu, ancak eski arayüzler ve kararsızlık nedeniyle alternatif araçlar aramaya başladı
  • lazygit, basit, hızlı ve CLI ile uyumlu yapısıyla güvenilirlik sağladı

LazyGit'in başlıca özellikleri

Tutarlılık (Consistency)

  • Arayüz, birden fazla 'view box' yapısından oluşuyor ve her zaman aynı görsel düzeni koruyor
    • Soldaki kutu seçildiğinde sağdaki içerik buna bağlı olarak değişiyor
  • Git terminolojisini ve soyutlamalarını olduğu gibi kullandığı için öğrenme eğrisini azaltıyor
    • Örnek: bisect, hunk gibi standart Git kavramları doğal biçimde öğrenilebiliyor
  • vim tuş atamalarını (h/j/k/l, q, /, y, c, a, f, p, r vb.) benimseyerek hızlı kullanım sağlıyor
  • Komut sayısını sınırlayıp "tek işi iyi yap" anlayışındaki Unix felsefesini takip ediyor

Keşfedilebilirlik (Discoverability)

  • Çalıştırıldığında ihtiyaç duyulan bilgileri anında gösteriyor
    • Mevcut depo, branch, staging durumu, son commit'ler, stash, son komut, kısayollar vb.
  • Görsel aşırı yük oluşturmadan bilgi sunduğu için bağlam değişimini en aza indiriyor
  • Alt footer üzerinden ya da ? tuşuyla kısayollar anında görülebiliyor
  • Kullanıcı, istediği anda mevcut konumunu ve durumunu sezgisel olarak anlayabiliyor

Etkileşimlilik (Interactivity)

  • Karmaşık Git işlemlerini etkileşimli bir arayüzle yönlendiriyor
    • Örnek: push sırasında upstream farkı uyarısı, rebase sırasında interactive olup olmayacağının sorulması
  • Rebase, çakışma çözümü ve branch değiştirme süreçlerinde otomatik onay ve sonraki adım önerileri sunuyor
  • pick/drop/squash komutlarını doğrudan yazmaya gerek kalmadan tuş kombinasyonlarıyla işlem yapılabiliyor
  • Minimum düzeyde kesintiyle kullanıcının güvenini ve hızını artırıyor

Geliştirilmiş Git iş akışı

  • lazygit, yeni bir iş akışı eklemek yerine mevcut Git özelliklerini daha güvenli ve daha hızlı kullanmayı sağlıyor
  • Satır ve hunk bazında patch seçimi özelliğiyle kodu ayrıntılı biçimde geri alma imkanı veriyor
    • Commit'in yalnızca bir kısmını geri almak veya ayırmak mümkün
  • Başlıca kısayol iş akışı örnekleri
    • Mevcut commit'i düzenleyip push etme: 2 space A P enter
    • Yeni commit oluşturup push etme: 2 space c <başlık> P
    • Branch rebase etme: 3 r i ... m c
    • Commit silme: 4 d
    • Commit bölme: 4 enter enter <c-p> n <başlık> enter
    • Cherry-pick: 3 4 C 3 4 V
  • Tekrarlı kullanımda kısayollar doğal biçimde alışkanlığa dönüşüyor ve çalışma hızını büyük ölçüde artırıyor

Geliştirici araçları UX'inden çıkarılacak dersler

  • lazygitin sadelik, tutarlılık, keşfedilebilirlik, makul varsayılanlar ve etkileşimlilik yaklaşımı, mükemmel geliştirici aracı tasarım ilkeleri sunuyor
  • Derin yapılandırılabilirlik, genişletilebilirlik ve açık kaynak katkı ekosistemi sağlıklı biçimde korunuyor
  • %100 Go diliyle yazılmış TUI framework'ü (gocui) tabanlı olması, başka araçların geliştirilmesinde de değerlendirilebilecek bir temel sunuyor
  • Benzer UX kalıplarını kullanan yeni CLI/TUI araçlarının geliştirilebileceğini gösteriyor

Sonuç

  • lazygit, basit bir Git UI'ın ötesinde geliştirici üretkenliği ve UX tasarımı için örnek bir vaka olarak değerlendiriliyor
  • Yapay zeka destekli özellikler gelişse bile, doğruluk ve güvenilirlik gerektiren sürüm kontrolü alanında hâlâ temel bir rol oynuyor
  • Açık kaynak topluluğunun katkısı ve iş birliğiyle gelişimini sürdürüyor
  • Herkes tarafından kullanılabilir ve katkı verilebilir; hızlı ve sezgisel bir Git deneyimi sunuyor

1 yorum

 
GN⁺ 2025-11-11
Hacker News görüşleri
  • Eskiden magit, neogit, lazygit gibi klavye merkezli git TUI’lerini seviyordum
    Ama artık git yerine jujutsu(jj) kullanıyorum
    jj CLI’a alıştıktan sonra jjui kullanmaya başladım
    Sık sık commit bölmem gerekiyor ve hunk.nvim eklentisi bu konuda çok kullanışlı
    Ayrıca jj conflict çözümünde jj-diffconflicts en iyisi
    Artık jj ile commit grafiğini kod satırlarını taşır gibi doğal şekilde düzenleyebiliyorum

    • Araç bağlantıları için teşekkürler. Acaba patch serisinde diff’leri ayırıp yeniden birleştirebilen başka araçlar da biliyor musun?
      Eski bir commit’ten gereksiz bir hunk kaldırınca sonraki commit’lerde zincirleme conflict oluşuyor; bunu otomatik halleden bir araç var mı diye merak ediyorum
    • Ben de git’ten jj’ye tamamen geçtim. Yalnız lazygit’in diff görünümü daha temiz olduğu için sadece o kısımda hâlâ lazygit kullanıyorum
      Diff’in dosyalara göre ayrılmış görünmesi hoşuma gidiyor; tek sebep bu
    • Ben de jj’ye geçiş sürecindeyim. Henüz tüm projelerde kullanmıyorum ama bu sadece zaman meselesi
      Yine de jj’ye özel GUI seçenekleri daha fazla olsa iyi olurdu. Birden fazla değişikliği tek bakışta görmek istediğimde gg kullanıyorum ama side-by-side diff yok
      git butler videolarını görünce jj arayüzünün de o yönde gelişmesi güzel olur diye düşündüm
      Değişiklikleri sürükleyerek taşıyabildiğin ya da split/rebase işlemlerini etkileşimli yapabildiğin bir GUI olsa harika olurdu
    • git’in sorunu fazla görüş dayatmayan (unopinionated) bir yapıda olması
      Her takımın git flow’u farklı ve geliştiriciler ya gereksiz mikro optimizasyonlara saplanıyor ya da öğrenmek istemiyor
      Sonuçta her takımın bir git uzmanına ihtiyaç duyduğu bir yapı ortaya çıkıyor
      Keşke tek bir çalışma biçimini zorlayan bir araç olsa
  • Komik gelebilir ama şimdiye kadar kullandığım git UI’ları içinde SourceTree kadar iyisini görmedim
    Basit işler yaparken CLI’dan çok daha rahat ve dosya durumu ile geçmiş görünümü gerçekten çok iyi
    Hunk ya da satır bazında stage/unstage yapmak da kolay
    Tek eksiği Linux sürümünün olmaması. Başka araçların hepsini denedim ama sonunda yine buna dönüyorum
    Son zamanlarda lazygit de kullandım; TUI’ler arasında gayet iyiydi

    • magit denedin mi? Emacs tabanlı olduğu için öğrenme eğrisi var ama tamamen klavye merkezli ve desteklemediği bir workflow bulmak zor
    • Commit atarken Git Extensions’ın Commit görünümü en iyisiydi
      Otomatik yenileme olmadığı için CLI ile çakışmıyor
      Git Extensions Commit belgeleri
    • Ben en çok Sublime Merge’i seviyorum. Hızlı, arayüzü temiz, tüm platformlarda iyi çalışıyor ve tek seferlik lisans alımıyla iş bitiyor
    • Fork ya da Tower’ın SourceTree’den çok daha iyi olduğunu düşünüyorum. Yoksa sadece ücretsiz araçları mı denedin?
    • Dünyada SourceTree’den daha nefret ettiğim çok az arayüz var
      Sayısız bug ve garip sorun yüzünden zaman kaybettim. Lütfen SourceTree’yi bırakın
  • git’i ne kadar doğrudan kullanırsam git CLI arayüzünün mantıksızlığını o kadar fazla hissediyorum
    İki yıldır jj kullanıyorum ve artık git CLI’a geri dönebileceğimi sanmıyorum
    İnsanların git’te kafası karışıp sorun çıkardığını o kadar sık gördüm ki, artık doğrudan başka bir şey kullanmalarını öneriyorum

    • Ben de jj’yi birkaç kez denedim ama workflow’a elim alışmadığı için hızım düşüyor
      Editörde değişiklikleri bölüp commit etmeyi seviyorum ama jj’nin editör entegrasyonu zayıf olduğu için commit’ler sonunda dağınık oluyor
  • İsmi yüzünden uzak duranlar var ama GitHub Desktop aslında oldukça iyi
    GitHub dışındaki repo’larda da sorunsuz çalışıyor ve commit düzenleme ile dosya/satır bazında cherry-pick işlemleri kolay
    Her karmaşık işleme açıklamalar eşlik ettiği için özellikle yeni başlayanlar için çok iyi
    Merge ya da grafik özellikleri zayıf ama yine de git CLI’dan çok daha iyi olduğunu düşünüyorum
    Takıma yeni biri katıldığında hep GH Desktop kullanmasını sağlıyorum. Hata azalıyor, kavrayış hızlanıyor

    • Ben de GH Desktop konusunda aynı fikirdeyim. Özellik ekleme hızı yavaş ama temkinli ilerliyor
      git konusunda kendine güvenmeyen biri için en iyi seçenek
      Öte yandan git’e fazla güvenen junior geliştiricilerin repo’yu mahvettiğini çok gördüm
      Bu yüzden ekip arkadaşlarıma GH Desktop’ı güçlü şekilde tavsiye ediyorum
    • GH Desktop’ın merge/conflict çözümü ve grafik görünümünün olmaması galiba insanların uzak durmasının nedeni
  • Birçok git kullanıcısı git-absorb’u bilmiyor
    Her türlü git flow’a iyi uyuyor ve stage edilmiş değişiklikleri birden fazla commit’e bölerek düzeltme işinin acısını azaltıyor
    TUI’lerin çoğunda böyle bir özellik yok

    • Faydalı görünüyor ama ben magit kullandığım için commit ve rebase zaten hızlı
      Rust tabanlı araçları, bağımlılıkları fazla olduğu için, pek tercih etmiyorum
    • Bu araç GNU/Debian repo’larında da var
    • Birkaç ay kullandım ama bazen commit’leri yanlış squash edip repo’yu yarı bozuk hale getirdiği oldu
      Güvenim azaldığı için sonunda bıraktım. Fazla sihirli çalışması rahatsız edici geliyor
    • Benim için geçmişin açıklığı daha önemli. Sırf temiz isimler uğruna kayıt geçmişini yeniden yazmak iyi bir fikir değil
  • Ben hâlâ tig tercih ediyorum
    Özelliği daha az ama arayüzü basit ve hızlı
    Çoğunlukla incremental index eklemek için kullanıyorum

    • Ben de 15 yılı aşkın süredir hunk stage için tig kullanıyorum
  • VS Code ücretsiz, platformlar arası ve zaten birçok kişi kullanıyor
    git GUI’si de iyi ve genel workflow’ların hepsini karşılıyor
    Normalde CLI kullanıyorum ama projeyi VS Code’da açık tuttuğumda GUI ile yapmak çoğu zaman daha hızlı ve daha sezgisel oluyor

    • Ama bence asıl sorun VS Code’un kendisini kullanmak zorunda olman
  • LazyVim + tmux birleşimi git kullanım şeklimi tamamen değiştirdi
    ctrl-g’ye basınca geçerli dizinde tmux floating pane içinde lazygit açılacak şekilde ayarladım
    Neovim’in içine girmen ya da arayüz değiştirmen gerekmiyor; doğrudan git işi yapabiliyorsun
    Terminal merkezli workflow’da en esnek ve akıcı deneyim bu

    • Ben de yakın zamanda tmux display-popup özelliğini öğrendim
      ~/.tmux.conf dosyasına
      bind-key C-g display-popup -E -d "#{pane_current_path}" -xC -yC -w 80% -h 75% "lazygit"
      
      eklenirse ctrl-b ctrl-g ile lazygit popup’ı açıp q ile kapatabiliyorsun
  • Ben git işlerini sesli komut + AI ile yapıyorum. Ya da ctrl-r’nin zaten yeterli bir arayüz olduğunu düşünüyorum

  • Henüz kimse bahsetmedi ama Gitu da gayet iyi bir istemci