Git worktree, tek repo içinde farklı çalışma dizinleri oluşturarak branch geçişlerini hızlandırır ve geliştiricilerin aynı anda birden fazla görevde verimle çalışmasını sağlar.
Ne oldu?
Git worktree, tek bir Git deposuna birden fazla bağımsız çalışma dizini bağlayan yerleşik bir özelliktir. Normal kullanımda bir repo yalnızca tek bir dizinle ilişkilidir ve farklı bir branch'e geçmek istendiğinde `git checkout` ya da `git switch` kullanılır; bu durum açık dosyaları değiştirir, build cache'lerini etkileyebilir ve yarım kalan işler için stash zinciri oluşturabilir. Worktree ile `git worktree add
` komutuyla aynı repoya ait ayrı bir klasör daha oluşturulur; bu klasör farklı bir branch veya commit'i gösterirken ana dizindeki çalışmalardan bağımsız kalır. Her worktree kendi HEAD'ini, izlenmeyen dosyalarını ve build çıktılarını korur; tümü ise aynı `.git` nesne veritabanını paylaştığı için gereksiz kopya oluşmaz.Neden önemli?
Yazılım ekiplerinin en büyük zaman kayıplarından biri "context switching"dir. Bir geliştirici acil hatayı çözmek için feature branch'inden `main`e, ardından başka bir inceleme (review) branch'ine geçerken stash yığınları, karışık dosyalar ve tekrarlanan build'lerle uğraşmak zorunda kalır. Worktree bu geçişleri neredeyse anında yapar; her branch kendi dizininde açık kalır, IDE'ler farklı pencerede çalışabilir, bağımsız test ortamları korunur ve dependency cache'leri çakışmaz.Ayrıca uzun süren build'leri veya CI senaryolarını farklı worktree'lerde paralel çalıştırmak mümkündür. Büyük monorepo'lar, uzun ömürlü destek (LTS) branch'leri veya aynı anda birden fazla sürümü sürdüren projelerde, diskte fazla yer kaplamadan çoklu branch çalışma pratiği ciddi verim kazancı sağlar. GitHub Copilot gibi yapay zeka asistanlarıyla çalışanlar için de farklı deneme/draft branch'lerini aynı anda açık tutmak, prompt-test döngülerini hızlandırabilir.
Kim veya ne etkileniyor?
Öncelikle yazılım geliştiricileri, DevOps mühendisleri ve kod incelemesi yapan teknik liderler etkilenir. Birden fazla özellik üzerinde eş zamanlı çalışan frontend/backend ekipleri, acil hotfix'ler ile normal geliştirme arasında hızlı geçiş yapan operasyon ekipleri ve açık kaynak projelerde birden çok pull request'i aynı anda takip eden katkıcılar worktree'den doğrudan fayda sağlar. Küçük kişisel projelerde kullanımı isteğe bağlı olsa da, aktif bakım, paralel sürüm ve sık branch değişimi gerektiren orta/büyük ölçekli projelerde worktree neredeyse vazgeçilmez bir araç haline gelir.Ne yapılmalı?
Geliştiricilerin git worktree pratiğini öğrenip günlük iş akışına entegre etmesi önerilir; `git worktree add ../proje-ozellik-x feature-x`, `git worktree list` ve `git worktree remove` komutlarıyla hızlıca başlanabilir. Aynı anda çalışılan her görev için ayrı bir worktree kullanmak, stash miktarını azaltır ve branch'ler arası geçişleri kolaylaştırır. Worktree'ler aynı `.git` nesne veritabanını paylaştığı için disk kullanımı optimize kalır, ancak build çıktılarının farklı dizinlere dağılması ve gereksiz worktree'lerin temizlenmesi için `.gitignore` kuralları ile periyodik cleanup rutinleri oluşturulmalıdır. CI/CD pipeline'larında paralel test, inceleme ve sürüm hazırlığı süreçlerinde worktree kullanımı denenmelidir.