← Blog

GitFlow Nedir?

GitFlow Nedir?

GitFlow, yazılım projelerinde sürüm kontrolünü düzenli bir şekilde yönetmek için kullanılan bir branching modelidir.


Temel Branch Yapısı

  1. Main
    • Release edilmiş en son stabil kod.
    • Sadece test edilmiş ve tamamen hazır sürümler merge edilir.
  2. Develop
    • Aktif geliştirme dalı.
    • Stabil kabul edilen ve testten geçen kod buraya merge edilir.
  3. Feature
    • Yeni özellik geliştirmeleri için oluşturulur.
    • develop dalından çıkarılır ve tamamlandığında tekrar develop dalına merge edilir.
  4. Release
    • Bir sürümün hazırlık aşamasında kullanılır.
    • develop dalından çıkarılır ve hazır olduğunda main ve develop dallarına merge edilir.
  5. Hotfix
    • Release'deki kritik hataları düzeltmek için kullanılır.
    • main dalından çıkarılır ve düzeltme tamamlandığında main ve develop dallarına merge edilir.

GitFlow İş Akışı

Feature

git checkout develop
git checkout -b feature/feature-name

Geliştirme tamamlanınca:

git add .
git commit -m "Add feature-name"
git checkout develop
git merge feature/feature-name
git branch -d feature/feature-name

Release

git checkout develop
git checkout -b release/x.y.z

Testler ve düzeltmeler tamamlanınca:

git checkout main
git merge release/x.y.z
git tag -a x.y.z -m "Release x.y.z"

git checkout develop
git merge release/x.y.z
git branch -d release/x.y.z

Hotfix

git checkout main
git checkout -b hotfix/hotfix-name

Düzeltme tamamlanınca:

git add .
git commit -m "Fix hotfix-name"
git checkout main
git merge hotfix/hotfix-name
git tag -a x.y.z -m "Hotfix x.y.z"

git checkout develop
git merge hotfix/hotfix-name
git branch -d hotfix/hotfix-name

Best Practices

  1. Branch İsimlendirmesi
    • feature/user-login
    • hotfix/api-oauth-issue
    • release/2.0.0
  2. Anlamlı Commit Mesajları
    • Kısa ve açıklayıcı mesajlar: Add user authentication, Fix logging issue
  3. Pull Request ve Code Review
    • Merge işlemlerinden önce kodların incelenmesi.
  4. Test Süreçleri
    • Yeni dallar merge edilmeden önce otomatik ya da manuel testlerden geçmeli.
  5. Tag Kullanımı
    • Her yeni sürüm main dalına merge edildiğinde tag eklemek.

Avantajlar

  • Karmaşık projelerde kod düzeni sağlama.
  • Geliştirme ve yayınlama ortamlarının net ayrımı.
  • Yeni özellikler ve hataların izole edilmesi.
  • Ekip koordinasyonunu kolaylaştırma.
GitBranching