Git worktree ile paralel geliştirme, aynı depoda birden fazla işi birbirine karıştırmadan yürütmenin en temiz yoludur. Yapay zekâ ajanlarıyla çalışırken bu daha da önemli hale gelir: iki ajan aynı klasörde çalışırsa birinin değişikliği diğerininkinin üstüne yazılır, testler yarım kalmış kodla çalışır ve hangi değişikliğin kime ait olduğu belirsizleşir.
Bu yazıda git worktree’nin ne olduğunu, ajanlarla nasıl kullanılacağını ve her ajan turunu geri alınabilir tutmanın yolunu anlatıyorum.
Git worktree nedir?
Git worktree, aynı deponun farklı dallarını ayrı klasörlerde aynı anda açmanı sağlar. Klasörlerin her birinin kendi çalışma dosyaları vardır, ama .git verisi ortaktır. Bir worktree’de attığın commit diğerinden anında görünür.
Klonla farkı:
| Worktree | Ayrı klon | |
|---|---|---|
| Disk kullanımı | Az (geçmiş paylaşılır) | Deponun tamamı kadar |
| Commit görünürlüğü | Anında | Fetch/push gerekir |
| Aynı dal iki yerde | Engellenir (güvenli) | Mümkün (karışıklık riski) |
| Kurulum | Tek komut | Klon ve ayar |
Temel komutlar
Yeni bir dal açarak worktree oluşturmak:
git worktree add ../acme-web-auth -b auth-refactor
Var olan bir daldan worktree açmak:
git worktree add ../acme-web-billing billing-v2
Worktree’leri listelemek ve kaldırmak:
git worktree list
git worktree remove ../acme-web-auth
git worktree prune
prune, klasörü elle silinmiş worktree’lerin kayıtlarını temizler.
Git worktree ile paralel geliştirme: ajan başına bir ağaç
Paralel ajanlar için kural basit: çakışma riski olan her ajana ayrı bir worktree ver.
Örnek düzen:
| Ajan | Görev | Worktree | Dal |
|---|---|---|---|
| Mimar (Claude Code) | Auth yeniden yapılanması | ../acme-web-auth | auth-refactor |
| Arayüz (Gemini CLI) | Ayarlar sayfası | ../acme-web-settings | settings-ui |
| Testçi (Codex) | Auth testleri | ../acme-web-auth | auth-refactor |
Testçi ile Mimar aynı worktree’yi paylaşıyor; çünkü Testçi Mimar’ın değişikliğini test ediyor ve yalnızca tests/ altında çalışıyor. Arayüz ajanı ise tamamen ayrı bir işte, ayrı bir dalda.
Bu düzenin faydaları:
- Ajanlar birbirinin yarım dosyalarını görmez.
- Her iş kendi dalında, kendi pull request’iyle birleşir.
- Bir işi bırakmak dalı silmek kadar kolaydır.
AgentVera’da worktree yönetimi
Worktree’leri komut satırından yönetmek mümkün, ama ajan sayısı artınca takip zorlaşır. AgentVera’da sağ paneldeki Worktree’ler sekmesi şunları sağlar:
- Yeni ya da var olan daldan worktree oluşturma.
- Her worktree için değişiklik sayısı, ana dala göre ileri/geri durumu ve son commit.
- Worktree’de doğrudan ajan başlatma.
- Kilitleme, prune, zorla kaldırma ve dalı silme.
Yeni ajan oluştururken de çalışma alanı olarak bir worktree seçebilirsin. Ajanın panelinde hangi dalda çalıştığı küçük bir etiketle görünür. Worktree’lerde ajanların değiştirdiği Markdown dosyaları da Spec’ler panelinde plan ve doküman olarak listelenir.
Her turu geri alınabilir tutmak
Worktree’ler ajanları birbirinden ayırır. Ama bir ajan kendi worktree’sinde yanlış bir yöne giderse ne olacak?
Geleneksel çözüm sık commit atmaktır; fakat ajanların her adımını commit’lemek geçmişi kirletir. AgentVera’daki turlar başka bir yol izler:
- Her turun başında çalışma klasörünün anlık görüntüsü gizli bir git referansına alınır.
- Dalına, index’ine ve stash’ine dokunulmaz.
- Ajan başına son 60 tur saklanır.
- Panelin Seçenekler menüsündeki Turlar’dan bir turun değiştirdiği dosyaları görürsün.
- Bu turu geri al ile o turdaki değişiklikleri geri alırsın; istersen geri almayı da geri alırsın.
Böylece ajanı rahatça deneyebilirsin: sonuç beğenilmezse tek tıkla bir önceki duruma dönersin.
Birleştirmeden önce
Paralel dallarda biten işleri ana dala almadan önce:
- Her worktree’de testleri çalıştır.
- Farkları incele; otomatik kod incelemesi bu adımı hızlandırır.
- Commit mesajlarını düzenle. AgentVera’nın Git paneli hazırlanan farktan deponun stiline uyan mesajı Claude Haiku ile yazabilir.
- Dalı GitHub’a gönder ve pull request aç; Git panelindeki GitHub kartı mevcut dalın pull request’ini gösterir ya da yenisini açar.
Sık yapılan hatalar
- Aynı dalı iki worktree’de açmaya çalışmak. Git buna izin vermez; bu bir koruma.
- Silinen klasörlerin kayıtlarını bırakmak.
git worktree pruneile temizle. - node_modules’u unutmak. Her worktree kendi bağımlılıklarını kurmalı.
- Ajan turlarını commit’lerle karıştırmak. Turlar geri alma içindir; kalıcı geçmiş için yine commit at.
Örnek bir gün: üç ajan, iki dal
Teoriyi bir çalışma günü üzerinden somutlaştıralım.
Sabah: kurulum
Ana klasörde main dalı açık. İki iş var: auth yeniden yapılanması ve ayarlar sayfası. İki worktree açarsın:
git worktree add ../acme-web-auth -b auth-refactor
git worktree add ../acme-web-settings -b settings-ui
Her worktree’de bağımlılıkları kurarsın:
cd ../acme-web-auth && pnpm install
cd ../acme-web-settings && pnpm install
Mimar ve Testçi auth-refactor worktree’sinde, Arayüz ajanı settings-ui worktree’sinde başlar.
Öğlen: bir tur yanlış gidiyor
Arayüz ajanı ayarlar sayfasını düzenlerken ortak bir bileşenin stilini de değiştirir. Bu kapsam dışı. Turlar listesinde son turun değiştirdiği dosyaları görürsün, turu geri alırsın ve ajana ortak bileşene dokunmamasını söylersin. Dalın geçmişi temiz kalır; çünkü geri alma bir commit değil, gizli referanstaki görüntüye dönüştür.
Akşam: birleştirme
Auth işi bitince testleri çalıştırırsın, incelemeye bakarsın ve dalı gönderirsin. Ayarlar sayfası henüz bitmediyse onun worktree’si açık kalır; ertesi gün ajan aynı klasörden devam eder. AgentVera uygulamayı kapatıp açtığında Claude ve Codex ajanlarını CLI geçmişinden aynı konuşmaya döndürür.
Worktree’lerde dikkat edilecek ortam ayrıntıları
Paralel worktree’lerde en sık takılan noktalar uygulama koduyla değil, ortamla ilgilidir:
- Port çakışması: İki worktree’de aynı anda geliştirme sunucusu açarsan ikisi aynı portu istemesin. Ortam değişkeniyle farklı portlar ver.
- Ortam dosyaları:
.envgibi git’e girmeyen dosyalar yeni worktree’ye kendiliğinden gelmez; kopyalaman gerekir. - Veritabanı: İki dal farklı migration’lar içeriyorsa aynı yerel veritabanını paylaşmak sorun çıkarabilir.
AgentVera’nın Portlar paneli, dinlenen portları ve hangi ajanın başlattığını gösterir; hangi worktree’nin hangi sunucuyu açtığını buradan takip edebilirsin.
Ajanı kopyalamak ve konuşmayı çatallamak
Bazen aynı problemi iki farklı yaklaşımla denemek istersin. AgentVera’da bir ajanı kopyaladığında araç, hesap, model, efor, rol, grup ve worktree birebir kopyalanır; istersen konuşma geçmişi de çatallanır (Claude’da --fork-session, Codex’te fork).
Bunu worktree’lerle birleştirmek güçlü bir deneme düzeni kurar: aynı konuşmadan çatallanan iki ajanı iki ayrı worktree’de çalıştırırsın, sonuçları karşılaştırırsın ve beğendiğin dalı birleştirirsin. Diğer dalı silmek, denemeyi iz bırakmadan temizler.
Kontrol listesi
- Çakışma riski olan her ajanın kendi worktree’si var mı?
- Her worktree’nin bağımlılıkları kurulu mu?
- Ajanların rollerinde hangi klasörde çalışacakları yazılı mı?
- Birleştirmeden önce testler ve inceleme yapıldı mı?
Sonuç
Git worktree ile paralel geliştirme, ajanları fiziksel olarak birbirinden ayırır; turlar ise her ajanın kendi içinde yaptığı değişiklikleri geri alınabilir tutar. İkisi birlikte, birden fazla ajanla güvenle çalışmanın temelini oluşturur.
AgentVera worktree’leri, turları ve Git panelini aynı pencerede toplar. Paralel kodlama ajanları yazısıyla birlikte okuyabilir, ücretsiz planla başlayabilirsin.