Git ile Güvenli Geliştirme: AI Kodlama Çağında Sürüm Kontrol Rehberi
Git: Yapay Zeka ile Kodlarken İhtiyacınız Olacak En İyi Arkadaş
Claude, ChatGPT ya da Copilot kullanarak kod üretiyorsun. Her şey çok hızlı gelişiyor. Proje yapısı saatler içinde değişiyor. Birden fark ediyorsun ki üç prompt önce AI'ın yazdığı o harika fonksiyon, şimdi tamamen uyumsuz hale gelmiş. Ne değişti, hiçbir fikrin yok.
Yapay zeka yardımlı geliştirmeye hoş geldiniz. Burada version control artık bir lüks değil—hayatta kalmanız için zorunlu bir alet.
Git Neden Makine Kod Yazarken Daha Kritik Hale Geliyor?
Başlayalım acı gerçekle: AI modelleri kod üretmede harika ama hafızaları yok. Bir oturum bittiğinde, önceki oturumda ne yaptıklarını unutuyorlar. Dün yaptığı mimarî kararları hatırlamıyorlar. Yaptıkları hatalar için özür dilemiyorlar.
İşte bu yüzden Git tam bu noktada hayat kurtarıyor.
AI yardımı ile çalışırken, aslında hızlı deneyler yapıyorsun. Bazen AI ilk seferde başarılı oluyor. Bazen doğru sonuca ulaşmadan önce üç farklı yaklaşım dener. Git olmadan, her tuş vuruşunun önemli bir şeyi silebileceği bir sisli alanda çalışıyorsun.
Git'i bir video oyunundaki kontrol noktaları gibi düşün. Ama burada öldüğünde yeniden yükleme yapacağın yerde, kodun çalışan hallerini kaydediyorsun ve AI farklı çözümleri rahatça deneyebiliyor.
Depo Oluşturma (Doğru Şekilde)
Git uzmanı olmanız gerekmiyor. Temelleri basitleştirelim.
Başlangıç Adımları
git init benim-ai-projesi
cd benim-ai-projesi
Tebrikler. İlk deponuzu oluşturdunuz. Fakat AI kodu her tarafa kaydetmeden önce bir şeyden bahsetmemiz lazım: hangi dosyalar Git'e girmemeli.
.gitignore Dosyası: İlk Savunma Hattı
Burası çoğu yazılımcının takılı kaldığı yer. Yapay zeka araçları ile çalışırken, version control'de hiçbir işi olmayan dosyalar birikiyor:
- Bağımlılık klasörleri: npm modülleri, pip paketleri ve benzeri
- Ortam dosyaları (.env): API anahtarlarını ve gizli bilgilerini asla kaydetmeyin
- Sohbet dışa aktarımları: ChatGPT oturumlarından gelen JSON dosyaları
- Derlenmiş çıktılar: dist klasörleri, build dosyaları
- Geçici belgeler: Sanal ortamlar, cache dosyaları
Yapay zeka geliştirme projeleri için kullanışlı bir .gitignore şablonu:
# Bağımlılıklar
node_modules/
venv/
env/
__pycache__/
*.pyc
# Ortam değişkenleri
.env
.env.local
.env.*.local
# Editor ve IDE dosyaları
.vscode/
.idea/
*.swp
*.swo
# AI araç çıktıları
*.log
ai_outputs/
conversation_exports/
temp_generations/
# Derlenmiş dosyalar
dist/
build/
*.egg-info/
# İşletim sistemi dosyaları
.DS_Store
Thumbs.db
Bunu başlangıç olarak kullanın, kendi teknoloji yığınınıza göre özelleştirin. Yanlışlıkla node_modules klasörünün tamamını kaydetmeye çalıştığınız gün, Git'in sizi kurtuladığına şükredeceğiniz anı gelecek.
Anlamlı Commit Mesajları Yazmak (AI Çağında)
Burası ilginçleşiyor. Klasik geliştirciler bir özelliği bitirdikten sonra commit yaparlar. AI ile çalışırken iş akışı farklı.
Her anlamlı AI etkileşiminden sonra commit yapın, her prompt-cevap döngüsünden sonra değil. Örneğin:
- AI çalışan bir API endpoint'i oluşturduğunda
- Üretilen kodu gereksinimlerinizle kontrol ettikten sonra
- AI'ın önerisini mevcut kodla entegre ettikten sonra
- Riskli bir refaktorlama istenmeden önce
Her prompt'u commit etmeyin. O zaten gürültü. Ama çalışan bir şeyiniz ya da sabit bir ara durumunuz olduğunda commit yapın.
Commit mesajlarınız konuşmaya benzemeli ama bilgilendirici olmalı:
✓ "AI tarafından oluşturulan kimlik doğrulama akışı - lokal kimlik bilgileriyle test edildi"
✓ "Claude'ün veritabanı şeması önerisi entegre edildi - doğrulama geçti"
✗ "kodu güncelle"
✗ "ChatGPT cevabı 12"
Amaç şu: gelecekte siz veya bir ekip arkadaşınız, neden bu kodun repositoryda olduğunu ve ne sorunu çözdüğünü anlayabilmek.
Worktree: Birden Fazla AI Deneyini Paralel Yürütmek
Gelişmiş bir teknik var ki, yapay zeka ile çalışırken çok değerli hale geliyor: Git worktree'leri. Aynı anda birden fazla branch'i ayrı klasörlerde açmanızı sağlıyor.
Şu senaryoyu düşünün: AI yardımı ile iki farklı mimari yaklaşımı test etmek istiyorsunuz. Devamlı branch değiştirmeden her ikisini de çalıştırmak istiyorsunuz. Worktree bunu mümkün kılıyor.
git worktree add ../proje-deney-1 -b feature/ai-mimarisi-v1
git worktree add ../proje-deney-2 -b feature/ai-mimarisi-v2
Artık iki ayrı çalışma klasörünüz var. Biri orijinal kodun başında kalırken, diğeri AI'ın önerdiği mimarî yenilemeyi test ediyor. Her iki yaklaşımı bağımsız olarak çalıştırıp, değişiklikleri ayrı ayrı kaydedebilir, kazananı main'e merge edebilirsiniz.
Şu durumlarda çok faydalı:
- Farklı AI modeli çıktılarını karşılaştırırken
- Riskli bir refaktorlamayı izole ortamda test etmek istediğinizde
- Ekip üyeleri farklı AI araçlarında çalışırken
- Aynı soruna birden çok çözüm prototipleyin istediğinizde
AI ile Çalışırken Branch Stratejisi
Dallanma yaklaşımınız, yapay zekanın geliştirme akışını nasıl değiştirdiğini yansıtmalı.
Önerilen yapı:
- main: Sadece üretime hazır kod
- develop: Stabilize edilmiş, test edilmiş AI özellikleri
- feature/ai-[açıklama]: Ayrı ayrı AI deneyleri
- test/[açıklama]: AI çıktılarını develop'a merge etmeden doğrulama için
Bu, AI önerilerini rahatça denemenize (feature branch'ler) izin verirken, ana codebase'in stabilitesini koruyor.
En Güçlü Yanı: Geri Alma ve Kurtarma
Git'i yapay zeka geliştirme için gerçekten vazgeçilmez kılan şey bu:
Bir AI'ye veritabanı sorgularını optimize etmesini söylüyorsunuz. Harika görünen bir şey üretiyor. Entegre ediyorsunuz. Aniden uygulamanız yüzde 30 daha yavaş oluyor, ne değişti hiç anlamıyorsunuz.
Git yoksa? Körü körüne debug ediyorsunuz, ne değişti ona bakıp tahmin etmeye çalışıyorsunuz.
Git varsa? Bir komut ile önceki stabil halinde geri dönüyorsünüz:
git revert [commit-hash]
Bu sadece kolaylık değil. 5 dakikalık kurtarma ile 5 saatlik debug arasındaki fark.
Gerçek Hayat Akışı: Günlük AI Geliştirme Döngüsü
Tipik bir gün şöyle görünüyor:
- Sabah: Develop branch'ini güncelleyin, dün AI'ın yaptığını gözden geçirin
- Araştırma: Günün AI çalışması için yeni bir feature branch oluşturun
- Üretim: AI araçlarıyla çalışın, önemli her sonuçtan sonra commit yapın
- Test: Çıktıları doğrulayın, testleri çalıştırın
- Entegrasyon: Stabilse, develop'a merge edin
- Yorum: Ne işe yaradı, ne işe yaramadı, neden belirli yaklaşımları tuttunuz—bunu yazın
Bu ritim—branch açma, üretim, commit, test, birleştirme—projenizi korurken yaratıcı akışı devam ettirir.
Bunu Görev Haline Getirmeyin
Son bir tavsiye: basit tutun. AI kaosundan korunmak için karmaşık Git iş akışlarına ihtiyacınız yok. Düz bir branching stratejisi, anlamlı commit'ler ve iyi bir .gitignore, ihtiyacınızın yüzde 90'ını karşılıyor.
Amaç Git uzmanı olmak değil. Amaç AI deneyleri şaşkınlık yaratırsa kurtarmanın felaketle sonlanmamış olmasını sağlamak.
Git, yapay zeka ile geliştirmeyi "umarım bir şey bozulmasın" dan "haydi keşfedelim, test edelim ve güvenle ilerleyelim" e dönüştürüyor.
Sırada Ne Var:
- İlk deponuzu düzgün bir .gitignore ile oluşturun
- AI tarafından oluşturulan anlamlı bir kod parçasından sonra ilk commit'i yapın
- Temel commit'ler ile rahat hissettikten sonra branch'leri keşfetmeye başlayın
- Birden fazla AI deneyini yönetirken worktree'leri deneyin
Git'i öğrenmenin en iyi zamanı yıllar önceydi. İkinci en iyi zaman şu an, yapay zeka projeniz kontrol dışına çıkmadan önce.