← Radar

Konu: Kodlama3 dk okuma

GitButler: Aynı klasörde birden fazla dalda aynı anda çalışmak

Bu neden önemli?

Bir özelliği yazarken gözüne bir hata çarpar, onu ayrı bir PR olarak göndermek istersin. Aynı anda birkaç ajan çalıştırıyorsan bu durum sürekli yaşanıyor. Değişiklikleri sonradan ayıklamak yerine baştan doğru dala koymak, hem incelemeyi hem geri almayı kolaylaştırıyor.

Git’in tek dal kuralı

Git’te bir çalışma klasörünün tek bir HEAD’i ve tek bir hazırlık alanı (index) var. Yani aynı anda tek bir dalda çalışıyorsun. Bir özelliğin yarısındayken acil bir hata gelirse bildik dans başlıyor: git stash, dal değiştir, düzelt, commit at, geri dön, git stash pop. Ya da iki işi aynı dala atıp sonra ayırmaya çalışıyorsun.

Bir yol daha var: Git worktree ile her dal için ayrı bir klasör açmak. Temiz ama bedeli var: Her klasörde bağımlılıkları yeniden kurmak, her biri için ayrı geliştirme sunucusu çalıştırmak gerekiyor.

Paralel dallar: Tek klasör, birden fazla dal

GitButler, Git’in üstüne kurulan bir masaüstü uygulaması ve but adında bir komut satırı aracı. Videonun gösterdiği ana fikir, eskiden “virtual branches” denen, belgelerde artık paralel dallar (parallel branches) diye geçen özellik.

Belgelere göre birkaç dal aynı çalışma klasörüne aynı anda uygulanabiliyor. Arayüzde her dal dikey bir şerit gibi duruyor ve her birinin kendi hazırlık alanı var. Bir dosyadaki değişikliği, hatta tek bir parçasını (hunk) sürükleyip istediğin dala atıyorsun. Sonra her dalı ayrı ayrı commit’leyip ayrı ayrı gönderiyorsun. Böylece hata düzeltmesi kendi PR’ında, özellik kendi PR’ında gidiyor. Ama ikisi de aynı klasörde, aynı geliştirme sunucusunda birlikte çalışıyor.

Arkada ne oluyor?

Git bu kavramı bilmiyor. GitButler bunu gitbutler/workspace adında bir dalla çözüyor. Bu dalın son commit’i, uyguladığın bütün dalların birleşimi (merge commit). GitButler onu sen dalları değiştirdikçe yeniden üretiyor. Böylece editörün ve diğer araçlar tek bir normal dal görüyor.

Belgelere göre git log, git status ve git diff gibi okuyan komutlar normal davranıyor. Yazan komutlarda, yani git commit ve git checkout’ta dikkatli olmalısın. GitButler, bu dala doğrudan commit atılmasını bir pre-commit kancasıyla engelliyor. Normal Git’e dönmek istersen but teardown yetiyor.

Bir sınır da var: Dallar aynı klasörü paylaştığı için birini ötekinden tamamen ayrı test edemiyorsun. İki dal aynı satırları değiştiriyorsa da işler karışıyor. Tamamen yalıtılmış çalışma istiyorsan worktree hâlâ daha uygun.

Geri alma ve ajanlar

GitButler durumu değiştiren her işlemi bir işlem günlüğüne yazıyor. Yanlış bir şey yaptığında but undo ile son adımı geri alabiliyor ya da istediğin bir kayıt noktasına dönebiliyorsun. Commit’leri bölmek, birleştirmek, başka dala taşımak da sürükle bırak ile yapılıyor.

Ajanlar için ayrı bir yol var. GitButler’ın blogunda anlatıldığına göre Claude Code’un kancaları (hooks), her dosya düzenlemesinde GitButler’a haber veriyor. GitButler her oturum için ayrı bir dal açıyor ve o oturumun değişikliklerini oraya koyuyor. Yani üç ajan aynı klasörde çalışsa bile sonunda üç ayrı dal çıkıyor. but komutlarına --json eklersen çıktı ajanların okuyabileceği biçimde geliyor.

Lisans konusunda bir not: GitButler “Fair Source” lisanslı. Kodu okuyup kullanabiliyorsun ama rakip bir ürün yapamıyorsun. README’ye göre her sürüm iki yıl sonra MIT’ye dönüşüyor.

Sonra ne oldu?

GitButler’ın öteki büyük özelliği üst üste dallar (stacked branches). Ağustosta GitHub da stacked PR’ları herkese açtı, yani bu çalışma şekli artık ana akım. GitButler’ın kurucu ortağı Scott Chacon ise eylül sonunda Git 3.0’ın SHA-256 kararını eleştiren yazısıyla gündeme geldi. Bunu Git 3 yazımızda anlattık.

Düşün

  • Son haftada kaç kez git stash yaptın? Bunların kaçı aslında ayrı bir dal olmalıydı?
  • Ajanların aynı klasörde mi yoksa ayrı kopyalarda mı çalışmasını tercih edersin? Neden?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (6, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.

Konu: Kodlama3 dkVideo: Better Stack

Aynı bilgisayarda paralel ajanlar: Git worktree ile ayrı kopya, Portless ile ayrı adres

Claude Code, Şubat 2026'da her oturumu ayrı bir git worktree içinde başlatan --worktree seçeneğini ekledi. Böylece iki ajan aynı dosyaların üstüne yazmıyor. Geriye bir sorun kalıyor: İkisi de geliştirme sunucusunu 3000 numaralı porttan açmak istiyor. Vercel Labs'in Portless aracı port numarası yerine isimli adresler veriyor.

Konu: Kodlama3 dkVideo: Better Stack

Ralph Wiggum döngüsü: Kodlama ajanını bir bash döngüsüne koymak

Ralph, bir kodlama ajanına aynı istemi tekrar tekrar veren basit bir bash döngüsü. Her turda ajan temiz bir bağlamla başlıyor, yapılacaklar listesinden tek bir işi alıp bitiriyor. Anthropic bunu Claude Code eklentisi yaptı, ama eklenti fikrin en önemli parçasını, her turda sıfırdan başlamayı atlıyor.