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ı
- Main
Release
edilmiş en son stabil kod.- Sadece test edilmiş ve tamamen hazır sürümler merge edilir.
- Develop
- Aktif geliştirme dalı.
- Stabil kabul edilen ve testten geçen kod buraya merge edilir.
- Feature
- Yeni özellik geliştirmeleri için oluşturulur.
develop
dalından çıkarılır ve tamamlandığında tekrardevelop
dalına merge edilir.
- 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ğundamain
vedevelop
dallarına merge edilir.
- Hotfix
Release
‘deki kritik hataları düzeltmek için kullanılır.main
dalından çıkarılır ve düzeltme tamamlandığındamain
vedevelop
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: ```bash 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
```bash
git checkout main
git checkout -b hotfix/hotfix-name
- Düzeltme tamamlanınca: ```bash 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
- Branch İsimlendirmesi
feature/user-login
hotfix/api-oauth-issue
release/2.0.0
- Anlamlı Commit Mesajları
- Kısa ve açıklayıcı mesajlar:
Add user authentication
,Fix logging issue
- Kısa ve açıklayıcı mesajlar:
- Pull Request ve Code Review
- Merge işlemlerinden önce kodların incelenmesi.
- Test Süreçleri
- Yeni dallar merge edilmeden önce otomatik ya da manuel testlerden geçmeli.
- Tag Kullanımı
- Her yeni sürüm
main
dalına merge edildiğinde tag eklemek.
- Her yeni sürüm
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.