Sorun: Tek klasör, birden fazla ajan
Bir ajana karanlık mod, diğerine bir hata düzeltmesi verdin. İkisi de aynı proje klasöründe çalışıyorsa aynı dosyaları değiştiriyor. Biri git checkout yapınca diğerinin altındaki dosyalar değişiyor. Testi kim bozdu, belli değil. Hepsini tek bir dalda yapmak da çözüm değil: Bir özellik hatalıysa diğer ikisi de onu beklemek zorunda kalıyor.
Gereken şey, her ajanın kendi kopyası. Ama projeyi üç kez klonlamak hem yer kaplıyor hem de üç ayrı depoyu senkron tutmayı gerektiriyor.
Worktree nedir?
Git worktree, aynı deponun ikinci, üçüncü bir çalışma klasörü. Git’in belgelerine göre bir depoya birden fazla çalışma klasörü bağlayabilirsin ve her biri ayrı bir dalda durabilir. Commit geçmişi, dallar ve ayarlar ortak. Her klasörün kendi dosyaları ve kendi HEAD’i var.
git worktree add -b karanlik-mod ../proje-karanlik-mod
git worktree list
git worktree remove ../proje-karanlik-mod
Bir kural önemli: Aynı dal aynı anda iki worktree’de açık olamıyor. Git bunu reddediyor. Bu da iki ajanın yanlışlıkla aynı dalda çalışmasını engelliyor.
Claude Code’un –worktree seçeneği
Worktree’yi elle yönetmek ek bir yük. Claude Code 19 Şubat 2026’da çıkan 2.1.49 sürümüyle bunu tek bir seçeneğe indirdi: claude --worktree karanlik-mod (kısaca -w). Belgelere göre worktree, deponun kökünde .claude/worktrees/karanlik-mod/ altında açılıyor ve worktree-karanlik-mod adında yeni bir dal oluşturuluyor. İsim vermezsen Claude rastgele bir isim seçiyor. Depoda en az bir commit olması gerekiyor.
Oturumdan çıkarken worktree’de değişiklik yoksa Claude onu siliyor. Değişiklik varsa tutmak ya da silmek isteyip istemediğini soruyor. Ertesi gün aynı isimle dönebiliyorsun. Bir gün sonra gelen 2.1.50 sürümü, alt ajan (subagent) tanımlarına isolation: worktree satırını ekledi. Böylece her alt ajan kendi geçici worktree’sinde çalışıyor.
Videoda üç özellik üç ayrı worktree’de aynı anda yazılıyor. Biri hatalı çıkınca diğer ikisi beklemeden birleştirilebiliyor. Unutma: Worktree yepyeni bir kopya. Bağımlılıkları her birinde ayrıca kurman gerekiyor. Git’e eklenmeyen .env gibi dosyalar da gelmiyor. Claude Code bunun için .worktreeinclude adlı bir liste dosyası destekliyor.
Port çakışması
Dosyalar ayrıldı ama bir şey hâlâ ortak: bilgisayarın portları. Üç worktree’de de npm run dev çalışırsa hepsi 3000’i istiyor. İlki alıyor, diğerleri ya hata veriyor ya da rastgele bir porta kayıyor. Ajan da hangi sekmenin hangi kopyaya ait olduğunu karıştırıp yanlış sayfayı test edebiliyor.
Portless, Vercel Labs’in bu soruna çözümü. Port numarası yerine myapp.localhost gibi isimli adresler veriyor. Arkada küçük bir proxy (araya giren yönlendirici sunucu) çalışıyor. Uygulamayı portless myapp next dev ile başlattığında Portless 4000 ile 4999 arasında boş bir port seçiyor ve bunu PORT ortam değişkeniyle uygulamaya veriyor. Tarayıcı myapp.localhost’a gittiğinde proxy isteği doğru porta iletiyor. İsim sabit kaldığı için hem sen hem ajan hep aynı adrese gidiyor.
Videoya göre PORT değişkenini dikkate almayan Vite gibi araçlarda elle ayar gerekiyordu. README bugün Vite, Astro ve Angular gibi araçlara doğru --port bayrağını kendisinin eklediğini söylüyor.
Sonra ne oldu?
- İki aracı birleştiren parça videodan sonra geldi. Portless 4 Mart’taki 0.5.0 sürümüyle worktree’leri tanımaya başladı. Ana kopyada adres
myapp.localhostolarak kalıyor.fix-uidalındaki bir worktree’de ise kendiliğindenfix-ui.myapp.localhostoluyor. Ayar gerekmiyor. - Videodaki
myapp.localhost:1355adresi de değişti. 0.9.0 sürümünden beri varsayılan, 443 portunda HTTPS vehttps://myapp.localhost. Bunun için ilk çalıştırmada yerel bir sertifika üretip sistemine güvenilir olarak ekliyor ve yönetici izni istiyor. Eski davranış için-p 1355hâlâ var. Proje Ekim 2026 itibarıyla 0.15 sürümünde, yani hâlâ 1.0 öncesi. - Claude Code’da worktree desteği büyüdü: Hangi daldan açılacağını seçmek, bir pull request’ten worktree açmak ve oturumun ana kopyaya yazmasını engelleyen kontroller eklendi. Worktree’leri listelemek ve biten işi tek komutla geri birleştirmek için bir araç da çıktı: Worktrunk.
- Paralel ajanların büyük ölçekte nasıl çalıştığını 16 Claude’un C derleyicisi yazdığı deneyde görebilirsin. Orada her ajan kendi konteynerinde, kendi kopyasında çalışıyordu. Ajanları bütün gün başka bir makinede çalıştırma fikri için uzaktan geliştirme yazımıza bakabilirsin.
- Ayrı klasör açmadan, birkaç dalı aynı klasörde birlikte tutmanın yolunu GitButler yazımızda anlattık.
Düşün
- Aynı anda iki ajan çalıştırdığında en çok hangi kaynak çakışıyor: dosyalar, portlar, veritabanı mı?
- Bir ajanın işi bitince worktree’yi silmeden önce neyi kontrol edersin?
Videoyu izle
Kaynaklar (7, İngilizce)
- Better Stack: Native Worktrees Just Killed Traditional Claude Code Workflows (video) (yeni sekmede açılır)
- Better Stack: Vercel Just DESTROYED Port Numbers Forever (Portless) (video) (yeni sekmede açılır)
- Git documentation: git-worktree (yeni sekmede açılır)
- Claude Code Docs: Run parallel sessions with worktrees (yeni sekmede açılır)
- Claude Code CHANGELOG (yeni sekmede açılır)
- GitHub: vercel-labs/portless (yeni sekmede açılır)
- Portless CHANGELOG (yeni sekmede açılır)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.