GitHub Flow Nedir?
GitHub Flow, modern ve hafif bir branching modeli. Özellikle sürekli dağıtım (CD) süreçlerine uygun, sade bir iş akışı için kullanılır. Küçük ve sık deploy yapılacak projelerde çok etkili.
Temel Prensipler
- Main her zaman dağıtıma hazır olmalı
main
dalı her zaman deploy edilebilir bir durumda tutulur.
- Her geliştirme yeni bir branch’te yapılır
- Tüm yeni özellikler ve düzeltmeler
main
dalından yeni bir branch açılarak geliştirilir.
- Tüm yeni özellikler ve düzeltmeler
- Pull Request ile geliştirme birleştirilir
- Branch tamamlandıktan sonra
main
dalına merge edilmeden önce Pull Request açılır ve kod gözden geçirilir.
- Branch tamamlandıktan sonra
- Kod gözden geçirildikten sonra merge edilir
- PR onaylandıktan sonra branch,
main
dalına merge edilir.
- PR onaylandıktan sonra branch,
- Deploy, merge sonrası yapılır
main
dalına her merge işlemi yapıldığında deploy alınır.
1. Yeni Branch Açma
git checkout main
git checkout -b feature/feature-name
2. Geliştirme Yapma
- Geliştirme süresince düzenli commit:
git add . git commit -m "Add feature-name"
3. Branch’i Push Etme
git push origin feature/feature-name
4. Pull Request Açma
- GitHub’da branch için PR oluşturulur.
- PR açıklamasına yapılacak değişiklikler ve ilgili detaylar eklenir.
5. Code review ve Merge
- Kod gözden geçirilir ve onaylanır.
- Merge işlemi yapılır:
git checkout main git merge feature/feature-name
6. Dağıtım (Deployment)
- Merge işlemi sonrası kod otomatik veya manuel olarak dağıtıma alınır.
7. Branch’i Silme
- Merge sonrası artık ihtiyaç olmayan branch silinir:
git branch -d feature/feature-name git push origin --delete feature/feature-name
Best Practices
- Anlamlı Branch İsimlendirmesi
feature/add-login-page
fix/api-timeout
- Küçük ve Odaklı Branch’ler
- Her branch sadece tek bir özelliği veya hatayı çözmeli.
- Düzenli Commitler
- Commitler küçük ve sık yapılmalı, her biri anlamlı bir değişiklik temsil etmeli.
- Code Review
- Merge işlemi öncesi her zaman PR oluşturulmalı ve kod incelenmeli.
- Sürekli Dağıtım (CD)
-
main
dalına yapılan her merge sonrası dağıtım yapılmalı.
-
Avantajlar
- Basit ve kolay anlaşılır.
- Sürekli dağıtım için ideal.
- Küçük, sık değişikliklerle çalışma sağlar.
- Hızlı geri bildirim döngüsü.