smaple.tr
Git

Git ve Versiyon Kontrol Stratejileri Rehberi [2026]

Mehmet Kurtipek
9 Temmuz 2026
11 dk okuma
Git
versiyon kontrol
branching stratejisi
GitFlow
trunk-based
monorepo
Git workflow
code review

Giris: Versiyon Kontrolun Stratejik Onemi

Versiyon kontrol, yazilim gelistirme surecinin temel tasidir. Ancak Git'i etkili kullanmak, yalnizca komutlari bilmekle sinirli degildir. Dogru branching stratejisi, tutarli commit kurallari, etkili code review surecleri ve CI/CD entegrasyonu bir arada dusunuldugunde versiyon kontrol, ekibin uretkenligini dogrudan etkileyen stratejik bir karara donusur.

Yanlis bir workflow secimi, birlestirme catismalarinin artmasina, dagitim surelerinin uzamasina ve ekip motivasyonunun dusmesine neden olabilir. Buna karsilik dogru strateji, yazilim teslimat hizini arttirir, hata oranini dusurur ve ekipler arasi isbirligini guclentirir.

Bu rehberde Git tabanli versiyon kontrol stratejilerini kapsamli olarak inceleyecek, farkli branching modellerini karsilastiracak, monorepo ve polyrepo yaklasimlarini degerlendirecek ve uretim ortaminda Git kullaniminin en iyi uygulamalarini paylasacagiz.

Branching Stratejileri

Branching stratejisi, ekibin kod uzerinde nasil isbirlikli calistigini belirleyen temel karardir. Her stratejinin kendine ozgu avantajlari ve uygun oldugu senaryolar vardir. Strateji seciminde ekip buyuklugu, dagitim sikligi, urun yapisi ve surum yonetimi gereksinimleri belirleyici faktorlerdir.

GitFlow

GitFlow, Vincent Driessen tarafindan tanimlanan ve uzun suredir yaygin kullanilan bir branching modelidir. Bes temel dal uzerine kuruludur: main (uretim kodu), develop (gelistirme entegrasyonu), feature/* (ozellik dallari), release/* (surum hazirligi) ve hotfix/* (acil duzeltmeler).

GitFlow'un avantajlari arasinda net surum yonetimi, paralel ozellik gelistirme ve uretim kodunun izolasyonu yer alir. Release dallari, surum oncesi test ve stabilizasyon sureci icin yapilandirilmis bir ortam saglar. Ancak karmasik dal yapisi, uzun omurlu dallarin birlestirme catismalarina yol acmasi ve hizli dagitim ihtiyaclariyla uyumsuzlugu, GitFlow'un dezavantajlari arasindadir.

GitFlow, belirli surum takvimi olan, birden fazla surumu es zamanli destekleyen ve kurumsal yazilim urunleri gelistiren ekipler icin uygundur. Masaustu uygulamalar, mobil uygulamalar ve surum numarasi gerektiren urunlerde etkilidir. Surekli dagitim yapan ekipler icin ise daha hafif alternatifler tercih edilmelidir.

GitHub Flow

GitHub Flow, GitFlow'a kiyasla cok daha basit bir modeldir. Yalnizca main dali ve kisa omurlu feature dallari kullanilir. Her degisiklik bir feature dalinda gelistirilir, pull request ile incelenir ve dogrudan main'e birlestirilir. Main dali her zaman dagitilabilir durumda tutulur.

Bu modelin basitligi, hizli iterasyona olanak tanir. Surekli dagitim yapan web uygulamalari ve SaaS urunleri icin idealdir. Yeni ekip uyelerinin ogrenme egrisi minimumda kalir. Ancak birden fazla surumun es zamanli desteklenmesi gereken projelerde yetersiz kalabilir ve hotfix sureci icin ek konvansiyonlar gerektirebilir.

Trunk-Based Development

Trunk-based development, tum gelistiricilerin tek bir ana dal (trunk) uzerinde calismasini ve kucuk, sik commit'ler yapmasini onerir. Feature dallari kullanilsa bile omru bir iki gunden fazla olmaz. Bu yaklasim, birlestirme catismalarini minimuma indirir ve surekli entegrasyonu zorunlu kilar.

Google, Meta ve Microsoft gibi buyuk teknoloji sirketleri trunk-based development kullanimini benimsemistir. Feature flag'ler ile tamamlanmamis ozellikler uretim ortaminda gizlenerek, kodun surekli olarak ana dala entegre edilmesi saglanir. Bu strateji, CI/CD pipeline'larinin guclu olmasi ve kapsamli otomatik test altyapisinin bulunmasini gerektirir. Test kapsaminin dusuk oldugu projelerde trunk-based gecis riskli olabilir ve once test altyapisinin guclentirilmesi gerekir.

Release Flow

Release flow, trunk-based development ile GitFlow arasinda bir orta yol sunar. Gelistirme trunk uzerinde yapilir, ancak surum icin ayri dallar olusturulur. Microsoft'un Azure DevOps ekibi tarafindan yayginlastirilan bu model, buyuk olcekli projeler icin esneklik saglar. Surum dallarinda yalnizca cherry-pick ile secilmis hotfix'ler uygulanir ve trunk her zaman en guncel kodu icerir.

Monorepo vs Polyrepo

Depo organizasyonu, versiyon kontrol stratejisinin onemli bir boyutudur. Monorepo ve polyrepo arasindaki secim, ekip yapisi, proje olcegi ve organizasyonel dinamiklere bagli olarak degisir.

Monorepo Avantajlari

Monorepo yaklasiminda tum projeler tek bir depoda yer alir. Kod paylasimi kolaydir, atomik degisiklikler mumkundur ve bagimlilik yonetimi merkezilestir. Refactoring islemleri tum projeleri kapsayacak sekilde tek bir commit ile yapilabilir. Google, Meta ve Twitter gibi sirketler devasa monorepo yapilari kullanmaktadir. Paylasilmis kutuphanelerde yapilan bir degisikligin tum tuketici projelerde aninda gorulmesi, senkronizasyon sorunlarini ortadan kaldirir.

Polyrepo Avantajlari

Polyrepo'da her proje kendi bagimsiz deposunda yer alir. Erisim kontrolu daha kolay yonetilir, depo boyutu kucuk kalir ve bagimsiz dagitim mumkundur. Her takim kendi depolama yapilandirmasi, CI/CD pipeline'i ve surum yonetimi uzerinde tam kontrole sahiptir. Farkli ekiplerin farkli teknolojiler kullandigi ve bagimsiz calisma ihtiyacinin yuksek oldugu organizasyonlarda polyrepo tercih edilir. Acik kaynakli projelerde ve dis katkilara acik projelerde polyrepo dogal bir secimdir.

Karar Kriterleri

Ekip buyuklugu, kod paylasim ihtiyaci, dagitim sikligi ve erisim kontrolu gereksinimleri, monorepo ve polyrepo arasindaki secimi belirleyen temel faktorlerdir. Kucuk ve orta olcekli projelerde monorepo genellikle daha verimlidir. Buyuk organizasyonlarda ise monorepo araclari (Nx, Turborepo, Bazel) olmadan monorepo yonetimi zorlasabilir. Hibrit yaklasimlar da mumkundur; ana urun monorepo'da tutulurken bagimsiz araclar ayri depolarda yonetilebilir.

Commit Kurallari

Tutarli ve anlamli commit mesajlari, proje gecmisinin okunabilirligini arttirir ve otomasyon imkanlari sunar. Iyi yazilmis commit gecmisi, hata ayiklamada, surum notlari olusturmada ve kod incelemelerinde buyuk kolaylik saglar.

Conventional Commits

Conventional Commits, yapilandirilmis commit mesajlari icin bir standart tanimlar. Her commit mesaji bir tip, isteye bagli bir kapsam ve aciklama icerir:

feat(auth): kullanici kayit formuna e-posta dogrulama eklendi
fix(payment): kredi karti validasyonundaki regex hatasi duzeltildi
docs(api): REST endpoint dokumantasyonu guncellendi
refactor(core): veritabani baglanti havuzu yeniden yapilandirildi
perf(search): arama indexleme suresi yuzde 40 iyilestirildi
chore(deps): axios kutuphanesi v1.7 surumune guncellendi

Bu yaklasim, otomatik changelog uretimi, semantik versiyonlama (SemVer) ve commit gecmisinin filtrelenmesi gibi otomasyon imkanlari saglar. commitlint araci ile commit mesajlarinin kurallara uygunlugu otomatik olarak denetlenebilir. feat tipi minor versiyon artisina, fix tipi patch versiyon artisina ve BREAKING CHANGE notasyonu major versiyon artisina karsilik gelir.

Pull Request En Iyi Uygulamalari

Pull request'ler, kod kalitesinin korunmasi ve bilgi paylasiminin saglanmasi icin kritik bir mekanizmadir. Etkili pull request surecleri olusturmak, ekibin genel verimliligi uzerinde buyuk etkiye sahiptir.

PR Boyutu ve Yapisi

Kucuk ve odakli pull request'ler, inceleme kalitesini arttirir. Arastirmalar, 200-400 satir araligindaki degisikliklerin en etkili sekilde incelendigini gostermektedir. 1000 satiri asan PR'larda inceleyicilerin dikkat seviyesi onemli olcude duser ve gozden kacirilan hata orani artar. Buyuk degisiklikler, mantiksal parcalara bolunmeli ve her parca bagimsiz olarak incelenmelidir.

Her PR'in acik bir baslik, yapilan degisikliklerin ozeti, motivasyon aciklamasi, test plani ve varsa gorsel degisiklikler icin ekran goruntuleri icermesi beklenir. PR sablon dosyalari (pull request templates) kullanarak bu yapinin tutarliligini saglamak mumkundur. Iliskili issue'lara referans vermek, degisikligin baglamini anlamayi kolaylastirir.

Otomatik Kontroller

PR acildiginda otomatik olarak calistirilan kontroller, inceleme surecini hizlandirir. CI pipeline'inin testleri calistirmasi, lint kontrollerinin yapilmasi, kod kapsami raporlarinin uretilmesi ve guvenlik taramalarinin gerceklestirilmesi, inceleyicinin dikkatini kodun mantiksal yapisina yonlendirmesine olanak tanir. Otomatik kontroller basarisiz oldugunda birlestirmenin engellenmesi, kalite standartlarinin korunmasini saglar.

Code Review Kulturu

Code review, yalnizca hata bulmaya yonelik teknik bir islem degildir. Bilgi paylasimi, mentor-mentee iliskisi, kod standartlarinin korunmasi ve kolektif kod sahipligi gibi islevleri de vardir. Saglikli bir code review kulturu, ekibin teknik yetkinligini ortak bir sekilde yukseltir.

Etkili Inceleme Prensipleri

Incelemeler yapici ve saygili olmalidir. Kisisel elestiri yerine koda yonelik geri bildirim verilmelidir. Sorular sormak, oneriler sunmak ve alternatif yaklasimlari tartismak, saglikli bir inceleme kulturunun isaretidir. Engelleme (blocking) geri bildirimleri ile oneri (suggestion) nitelgindeki geri bildirimler net sekilde ayirt edilmelidir. Kucuk stilistik tercihler yerine mimari kararlar, performans etkileri ve potansiyel hatalar uzerine yogunlasmak, inceleme kalitesini arttirir.

Inceleme suresi de onemlidir. PR'larin 24 saat icinde incelenmesi hedeflenmelidir. Uzun bekleme sureleri, gelistirici motivasyonunu dusurur ve birlesme catismalarini arttirir. Smart Maple ekibi olarak, hizli ve kaliteli code review sureclerinin yazilim kalitesi uzerindeki dogrudan etkisini her projede deneyimliyoruz.

Birlestirme Stratejileri

Git, dallari birlestirmek icin uc temel strateji sunar ve her birinin proje gecmisi uzerinde farkli etkileri vardir. Takim icinde tek bir strateji belirlenmeli ve tutarli sekilde uygulanmalidir.

Merge Commit

Standart birlestirme, bir merge commit olusturarak iki dalin gecmisini korur. Dal gecmisinin tamamini muhafaza eder ve hangi commit'lerin hangi ozellik dalinda yapildigini acikca gosterir. Ancak cok sayida dal birlestirmesi proje gecmisini karmasiklastirir ve git log ciktisini okunmasi zor hale getirir.

Squash and Merge

Squash birlestirme, bir daldaki tum commit'leri tek bir commit'e sikistirir. Ana dalin gecmisini temiz tutar ve her commit'in calisan bir durumu temsil etmesini saglar. git bisect ile hata ararken temiz gecmis buyuk avantaj saglar. Ancak detayli commit gecmisi kaybolur. Feature dallari icin genellikle en uygun yaklasimdir ve GitHub, GitLab gibi platformlarda varsayilan olarak tercih edilmektedir.

Rebase and Merge

Rebase, commit'leri hedef dalin ucuna yeniden uygulayarak dogrusal bir gecmis olusturur. Temiz ve okunabilir bir gecmis saglar ancak paylasilmis dallarda rebase yapmak tehlikelidir cunku commit hash'leri degisir ve diger gelistiricilerin calismalarini bozabilir. Yalnizca yerel ve kisisel dallarda kullanilmasi onerilir. Interaktif rebase (git rebase -i) ile commit'ler birlestirilip duzenlenebilir.

Git Hook'lari ve Otomasyon

Git hook'lari, belirli Git olaylarina tepki olarak otomatik islemler calistirmayi saglar. Bu mekanizma, kod kalitesini surecin erken asamalarinda koruma altina alir ve kalite standartlarinin insan mudahalesi olmadan uygulanmasini garanti eder.

Yaygin Hook Kullanim Alanlari

pre-commit hook'u, commit oncesi lint ve formatlama kontrollerini calistirir. commit-msg hook'u, commit mesajinin conventional commits standardina uygunlugunu dogrular. pre-push hook'u, uzak depoya gondermeden once testleri calistirir. prepare-commit-msg hook'u ise commit mesajina otomatik bilgi (ornegin branch adi veya ticket numarasi) eklemek icin kullanilabilir.

Husky ve lint-staged gibi araclar, Git hook yonetimini kolaylastirir. lint-staged, yalnizca staged dosyalar uzerinde lint calistirarak performansi optimize eder. Bu kombinasyon, ekibin tutarli kod kalitesi standartlarini otomatik olarak uygulamasini saglar. lefthook ise Husky'ye Go tabanli bir alternatif olarak daha hizli calisma sunar.

Buyuk Dosya Yonetimi: Git LFS

Git, buyuk ikili dosyalari (gorseller, videolar, 3D modeller, veri setleri) verimli sekilde yonetemez. Her degisiklikte dosyanin tam kopyasinin saklanmasi, depo boyutunu hizla buyutur. Git LFS (Large File Storage), buyuk dosyalari ayri bir depolama alaninda tutarak Git deposunun boyutunu kontrol altinda tutar.

Git LFS, dosya icerigi yerine bir isaretci (pointer) dosyasini depoya kaydeder. Gercek dosya icerigi, istek uzerine LFS sunucusundan indirilir. Bu yaklasim, klonlama surelerini kisaltir ve depo boyutunu yonetilebilir seviyede tutar. Oyun gelistirme, medya projeleri ve makine ogrenmesi veri setleri iceren projelerde Git LFS kullanimi vazgecilmezdir. .gitattributes dosyasinda hangi dosya turlerinin LFS ile izlenecegi tanimlanir.

Git Guvenligi

Imzali Commit'ler

GPG veya SSH anahtarlari ile commit imzalama, commit'in belirtilen yazar tarafindan gercekten yapildigini dogrular. GitHub, GitLab ve Bitbucket imzali commit'leri gorsel olarak isaretler ve "Verified" etiketi gosterir. Ozellikle acik kaynakli projelerde ve kurumsal ortamlarda imzali commit zorunlulugu, tedarik zinciri guvenligini arttirir. Git 2.34 ve sonrasinda SSH anahtarlari ile imzalama destegi eklenmis olup, GPG'ye kiyasla daha basit yapilandirma sunar.

Dal Koruma Kurallari

Branch protection kurallari, kritik dallara dogrudan push yapilmasini engeller, PR incelemesini zorunlu kilar ve CI kontrollerinin gecmesini sart kosar. Ana dal icin en az bir onaylayici inceleme, durum kontrollerinin basarili olmasi ve dogrudan push'un engellenmesi temel koruma kurallaridir. Force push'un engellenmesi, dal gecmisinin korunmasini garanti eder.

Ek olarak CODEOWNERS dosyasi, belirli dosya veya dizinler icin otomatik inceleyici atanmasini saglar. Bu, kritik kod alanlarinda (guvenlik modulleri, altyapi konfigurasyonlari, veritabani migrasyonlari) uzman incelemesinin atlanmamasini garanti eder.

Submodule ve Subtree

Git Submodule

Submodule, bir Git deposunun baska bir depoyu belirli bir commit'te referans olarak icermesini saglar. Ortak kutuphaneler veya ucuncu taraf bagimliliklari icin kullanilir. Ancak karmasik yonetim gereksinimleri, git clone --recursive zorunlulugu, gunluk islemlerde ek dikkat ihtiyaci ve ekip uyesi hatalari, submodule kullanimini zorlastirir. Submodule guncellemelerinin unutulmasi, eski kodla calisma riskini dogurur.

Git Subtree

Subtree, harici bir deponun icerigini dogrudan ana depoya kopyalar. Submodule'e kiyasla daha basit bir kullanim deneyimi sunar. Klonlama sirasinda ek adim gerektirmez ve ekip uyelerinin subtree yapisini bilmesine gerek yoktur. Kucuk ve orta olcekli bagimliliklar icin submodule yerine subtree tercih edilebilir. Ancak subtree ile yonetilen kodun kaynak depoya geri katkida bulunulmasi (upstream push) daha karmasiktir.

Git Performansini Olceklendirme

Buyuk depolarda Git performansi zamanla dusebilir. Yuz binlerce dosya veya onlarca gigabayt gecmis iceren depolarda gunluk islemler gozle gorulur sekilde yavaslayabilir. Bu sorunu cozmek icin cesitli stratejiler uygulanabilir.

Buyuk Depolarda Performans

Kismi klonlama (partial clone) ve seyrek checkout (sparse checkout), buyuk monorepo'larda yalnizca ihtiyac duyulan dosyalarin indirilmesini saglar. git sparse-checkout ile calisma dizininde yalnizca ilgili klasorlerin gorulmesi, buyuk monorepo'larda gelistirme deneyimini onemli olcude iyilestirir. git maintenance komutu ile otomatik bakim gorevleri zamanlanabilir. Commit grafigi dosyasi (commit-graph), gecmis tarama islemlerini hizlandirir ve ozellikle git log ve git merge-base islemlerinde performans kazanci saglar.

Microsoft'un Azure DevOps ekibi, Windows deposu gibi devasa monorepo'lar icin Virtual File System for Git (VFS for Git / GVFS) gelistirmistir. Bu arac, dosyalari yalnizca erisim sirasinda indirerek milyonlarca dosya iceren depolarda bile hizli calisma saglar.

CI/CD Entegrasyonu

Git workflow'u ile CI/CD pipeline'i birbirine sikica baglidir. Dogru entegrasyon, yazilim teslimat surecinin guvenilirligini arttirir ve ekibin guvenle hizli dagitim yapmasini saglar.

Tetikleme Stratejileri

CI pipeline'lari, PR acilisinda, commit push'unda ve dal birlestirmesinde tetiklenebilir. Monorepo yapilarinda, degisiklikten etkilenen projelerin tespiti ve yalnizca ilgili testlerin calistirilmasi, build surelerini onemli olcude kisaltir. Path-based tetikleme kurallari bu amacla kullanilir. GitHub Actions'da paths filtresi, GitLab CI'da rules:changes direktifi bu islevseligi saglar.

CD pipeline'lari, ana dala birlestirme sonrasinda otomatik dagitim yapabilir. Trunk-based development ile surekli dagitim kombinasyonunda, her basarili birlestirme otomatik olarak uretim ortamina dagitilir. Bu yaklasim, feature flag'ler ve canary deployment ile birlestiginde hem hiz hem de guvenlik saglar.

Ortam Bazli Dallanma

Bazi ekipler, her ortam icin ayri dal kullanir: main uretim, staging test, develop gelistirme. Ancak bu yaklasim, dallar arasi tutarsizlik ve birlesme catismasi riskini arttirir. Modern yaklasim, tek dal uzerinden farkli ortamlara dagitim yapmak ve ortam farkliliklarini yapilandirma ile yonetmektir. Smart Maple olarak, Git stratejisinin CI/CD pipeline'i ile uyumlu bir butun olusturmasi gerektigini vurguluyoruz.

Sonuc

Git ve versiyon kontrol stratejileri, yazilim gelistirme surecinin temel yapi tasidir. Dogru branching stratejisi secimi, tutarli commit kurallari, etkili code review surecleri ve CI/CD entegrasyonu, ekibin uretkenligini ve yazilim kalitesini dogrudan etkiler. Ekibin buyuklugu, projenin yapisi ve dagitim sikligi gibi faktorler dikkate alinarak bilincli secimler yapilmalidir. Trunk-based development'in yayginlasmasi, feature flag kullaniminin artmasi ve monorepo araclarinin olgunlasmasi, 2026 itibariyla versiyon kontrol pratiklerinin evriminin devam ettigini gostermektedir. Onemli olan, secilen stratejinin ekip tarafindan benimsenmesi ve tutarli sekilde uygulanmasidir.

İlgili Makaleler

10 Ağustos 2026

MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma

Giriş: MLOps Nedir ve Neden Önemlidir? Makine öğrenmesi modelleri geliştirmek günümüzde nispeten kolaydır. Açık kaynak kütüphaneleri kullanarak son derece başarılı modeller oluşturabiliriz. Ancak bu modelleri production ortamına taşıyarak, ölçeklendirebilir, güvenilir ve sürdürülebilir şekilde çalıştırmak tamamen farklı bir hikayedir. Araştırmalara göre, veri bilimcileri tarafından geliştirilen makine öğrenmesi modellerinin %87'si hiçbir zaman production ortamına ulaşmaz. Bu başarısızlı

Devamını Oku: MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma
9 Ağustos 2026

LLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]

LLM Fine-Tuning: Kurumsal Yapay Zeka Stratejisinin Temel Taşı Büyük dil modelleri (LLM), genel amaçlı metin üretimi ve anlama konusunda etkileyici performans sergiliyor. Ancak kurumsal ortamlarda belirli bir alan, terminoloji veya iş sürecine uyum sağlamaları gerektiğinde, genel bilgileri çoğu zaman yetersiz kalıyor. Bu noktada fine-tuning, yani ince ayar süreci devreye giriyor. Fine-tuning sayesinde mevcut bir temel modeli, kendi verileriniz ve ihtiyaçlarınız doğrultusunda özelleştirmek

Devamını Oku: LLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]
8 Ağustos 2026

Bilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI

Bilgisayarlı Görü Uygulamaları: Endüstriyel ve Medikal AI'nin Temel Teknolojisi Bilgisayarlı görü, makine öğrenmesinin en etkili alanlarından biridir. Türkiye'de yaşanan dijital dönüşüm sürecinde, özellikle üretim, sağlık ve lojistik sektörlerinde görü tabanlı otomasyon kritik hale gelmiştir. Smart Maple olarak Ankara'da geliştirdiğimiz çözümler, son beş yılda 150+ kuruluşunun üretim verimliliğini ortalama %35 oranında artırmıştır. Bu rehberde, bilgisayarlı görü teknolojisinin iş değeri

Devamını Oku: Bilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI