GitFlow ile trunk-based development arasındaki fark nedir?
Cevap
GitFlow
Uzun ömürlü main ve develop dalları ile feature/*, release/*, hotfix/* dalları kullanır.
- Feature dalları
develop'a birleşir; sürüm zamanıreleasedalı açılır, test edilipmain'e alınır ve etiketlenir. - Uygun olduğu yer: planlı sürümler, aynı anda birden fazla sürümü destekleme (masaüstü yazılım, mobil uygulama, kütüphane).
- Dezavantaj: uzun yaşayan dallar büyük merge conflict'lere ve geç entegrasyona yol açar.
Trunk-based development
Herkes küçük değişikliklerle sık sık (günde en az bir kez) main'e entegre olur. Dallar varsa da çok kısa ömürlüdür (saatler, en fazla 1–2 gün).
- Bitmemiş özellikler feature flag arkasında gizlenir.
- Güçlü otomatik test ve CI şarttır;
mainher zaman deploy edilebilir olmalıdır. - Uygun olduğu yer: sürekli deploy (CD) yapan web servisleri.
| GitFlow | Trunk-based | |
|---|---|---|
| Dal ömrü | Uzun | Çok kısa |
| Entegrasyon sıklığı | Seyrek | Sürekli |
| Sürüm | Planlı, release dalı ile | Sürekli, main'den |
| Gereksinim | Süreç disiplini | Güçlü CI, feature flag |
Arada popüler bir seçenek GitHub Flow'dur: main + kısa ömürlü feature dalı + pull request + merge sonrası deploy.
İlgili Git soruları
- git merge ile git rebase arasındaki fark nedir?
- git reset ile git revert arasındaki fark nedir?
- İyi bir code review nasıl yapılır? .gitignore'a neler eklenmelidir?
- Interactive rebase ile commit'leri nasıl düzenler ve squash edersiniz?
- git cherry-pick ve git stash ne işe yarar? Hangi durumlarda kullanılır?
- Merge conflict nedir ve nasıl çözülür?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.