Geliştirme İşini Hızlandırmanın Sırları: Git Worktrees, Bulanık Arama ve AI Kodlama Araçları
Çoklu Repository Kaosu Nasıl Çözersin?
Eğer 2024'te bir yazılımcıysan, muhtemelen bilgisayarında yüzlerce git klonu var. Çalıştığın projeler, yan işlerin, deney amaçlı fork'lar, müşteri repoları... hepsi dosya sisteminizin farklı köşelerine dağılmış durumda. Saat 2'de find ~ -name "bu-repo" yazıp arattığın kaç kez hatırlamıyorsundur bile.
İşin içine yapay zeka kodlama araçlarını eklediğinde durum daha karmaşık hale geliyor. Claude Code, GitHub Copilot gibi servisler geliştirmeyi hızlandırsa da yeni bir sorun ortaya çıkıyor: izolasyon. Birden fazla AI aracını paralel olarak çalıştırırsan—biri altyapıyı refactor ederken diğeri API endpoint yazıyorken—her birine ayrı çalışma alanı lazım. Ortak bir klasör paylaşmak artık yardımcı değil, aksine engel olur.
Sürekli branch'ler arasında geçiş yapmak, değişiklikleri saklamak, conflict'leri çözmek, yanlışlıkla silinen işleri kurtarmak... bunlar sadece rahatsızlık değil, hem insanı hem AI'ı yavaşlatan gerçek darboğazlar.
Üç Araç, Sonsuz Düzen: ghq + gwq + fzf
İyi haber şu ki açık kaynak topluluğu bunu zaten çözmüş. Üç basit aracı kombinleştirerek daha düzenli, daha ölçeklenebilir ve AI destekli iş akışlarına mükemmel uyum sağlayan bir geliştirme ortamı kurabilirsun.
git worktree: Paralel Çalışmanın Sırrı
Araçlardan bahsetmeden önce temeli anlamalıyız: git worktree. Bu Git özelliği sayesinde tek bir repository için aynı anda birden fazla çalışma klasörü açabilirsin. Branch değiştir-saklı değişiklikleri al-çatışma çöz yerine, her biri için ayrı worktree oluşturursan hepsi paralel çalışır.
AI kodlama araçları için bu neden kritik? İzolasyon yani.
- Bir AI aracı A özelliğinde kendi worktree'sinde çalışıyor
- Başka bir AI aracı B bug'ında farklı worktree'de çalışıyor
- Birbirlerini hiç etkilemiyorlar
- İkisi de aynı anda bağımsız ilerleyebiliyor
Bu yaklaşım modern AI geliştirmeyle mükemmel uyum sağlıyor. Claude'u bir worktree'de kod analiz etmesini isteyebilir, başka birinde test çalıştırabilir, ana branch'i temiz tutabilirsin—hepsi aynı anda.
Birinci Araç: ghq — Repository Kaosunu Düzenle
ghq (GitHub Query) basit görünse de repository dağınıklığını standartlaştırarak çözer. Her klonu, remote URL'sine göre önceden belirlenmiş bir klasör yapısına koyar.
Dosya sisteminize rastgele dağılmak yerine, ghq şu yapıyı kurar:
~/ghq/
github.com/
owner/
repo-adı/
gitlab.com/
team/
project/
bitbucket.org/
user/
codebase/
Kök klasörü sen belirlersin (genellikle ~/ghq). Bundan sonra her repository öngörülebilir ve bulunabilir bir yerde yaşar. Felsefesi açık: standart kurallar, sonra otomasyon.
İkinci Araç: gwq — Worktree'leri Profesyonelce Yönet
gwq (git Worktree Query) bu felsefesini worktree'lere taşır. Rastgele yerler yerine, worktree'leri klonlanmış repolarla aynı kök altında organize eder.
Ayarları çok basit. ~/.config/gwq/config.toml içinde:
[naming]
template = '{{.Host}}/{{.Owner}}/{{.Repository}}={{.Branch}}'
[worktree]
basedir = '~/ghq'
Bu template sayesinde worktree'ler orijinal repodan kolayca ayrılabilir. Somut örnek:
~/ghq/
github.com/acme-corp/api # orijinal repo
github.com/acme-corp/api=odeme-ozelligi # ödeme feature'ı için worktree
github.com/acme-corp/api=auth-bugfix # kimlik doğrulama bug'ı için worktree
github.com/acme-corp/frontend # başka bir repo
github.com/acme-corp/frontend=arayuz-yenile # UI redesign worktree'si
=branch-adı soneki hangi worktree'nin hangi işle ilgili olduğunu anında gösterir. Birden fazla paralel görevle ilgilenirken bu çok önemli oluyor.
Üçüncü Araç: fzf — Dosya Listelerini İnteraktif Yapar
fzf (fuzzy finder) bu üçlüyü bir araya getiren yapıştırıcı. Terminal'de çalışan, liste girdilerini aranabilir arayüze dönüştüren hızlı bir araç.
Sihir ghq list'i fzf'ye yönlendirdiğinde oluşur:
ghq list | fzf
Aniden klasör yollarını yazmıyorsun. Repository'lerinizi bulanık arama yapıyorsun. "api" yazıyorsun, liste gerçek zamanlı filtreleniyor. Enter'a basıyorsun, doğru klasöre atlıyorsun.
Standart klasör yapısıyla birleşince gerçekten çok güçlü hale geliyor. Yolları, branch adlarını, worktree lokasyonlarını hatırlamak yerine kısmi kelimeler yazıyorsun. fzf ağır işi yapıyor.
Navigasyon Kısayolları Oluştur
Bu üç araç birlikte çalışınca, kolay hareket etmek için shell fonksiyonlar yazabilirsin.
Basit bir "repo'ya git" fonksiyonu:
# Herhangi bir repo'ya (orijinal veya worktree) atla
j() {
cd "$(ghq list --full-path | fzf)"
}
Bulunduğun repository içindeki worktree'ler arasında geçiş için:
# Şimdiki repo'daki worktree'ler arasında geç
jw() {
cd "$(git worktree list | awk '{print $1}' | fzf)"
}
Bu minimal bash kodları, standartlaştırmadan önceki dönem geliştiricilerin yaşadığı bağlam değiştirme yorgunluğunu ortadan kaldırıyor.
Neden AI ile Çalışırken Kritik Oluyor?
Gerçek değer ortaya çıkıyor çoklu AI araçlarıyla ve kendi katkılarınızla koordinasyon kurduğunda. Mesela NameOcean'ın Vibe Hosting platformu özellik dağıtımını hızlandırmak için yapay zeka yardımını kullanıyor. Standart ve öngörülebilir bir dosya yapısı sadece pratik değil, zorunlu oluyor.
AI araçlarınız tutarlı klasör düzenine güvenebilirse:
- Relevant koda daha hızlı ulaşabilirler
- Dosyalara güvenle referans verebilirler
- Paralel görevlerde sorumluluk ayrımını net tutabilirler
- Yollar değiştiğinde kırılmayan otomasyon scriptleri yazabilirler
Başlangıç: 15 Dakikalık Kurulum
- Araçları kur:
ghq,gwqvefzfçoğu paket yöneticisinde var - ghq'yu ayarla: Git config'inde
ghq.root = ~/ghqkoy - gwq'yu ayarla:
~/.config/gwq/config.tomloluştur, template ve basedir'i ver - Shell fonksiyonları ekle: Yukarıdaki kısayolları
.bashrcveya.zshrc'ye koy - Klonlamaya başla: Artık
git cloneyerineghq getkullan
Birkaç saat içinde bunu olmadan nasıl yönettin diye şaşıracaksın. Birkaç hafta içinde, bunun modern geliştirmenin temelini oluşturduğunu anlayacaksın.
Daha Geniş Perspektif
Bu araç seti, geliştirici verimliliğine yaklaşımımızda daha derin bir değişimi temsil ediyor. Dosya sistemiyle mücadele etmek yerine, uyum sağlıyoruz. Paralelleştirmeye karşı çıkmak yerine, onu kucaklıyoruz—hem insanlar hem yapay zeka için.
Zamanını tüketen küçük sorunlar bir gecede kaybolmaz. Ama birikiyor. Kaçınan her bağlam değiştirme bir küçük zafer. Çözülen her çatışma koruma altındaki hız. Kendi izole worktree'sinde bağımsız çalışabilen her AI aracı, ekibinin çıktısını çoğaltan bir katsayı.
Geliştirici deneyimini ciddiye alıyorsan—kendin için olsun, takımın için olsun—bu stackı hakketmeye değer.