Ana içeriğe geç

GitHub Branch Yapısı

Ana Branch'ler

Main (veya Master) Branch

  • Projenin kararlı ve yayınlanabilir sürümünü içerir
  • Doğrudan commit yapılmaz
  • Her commit production-ready olmalıdır
  • Tag'ler ile sürüm numaraları işaretlenir

Develop Branch

  • Ana geliştirme branch'i
  • Feature branch'leri buradan açılır
  • Tamamlanan özellikler buraya merge edilir
  • Bir sonraki sürüm için hazırlık branch'i

Geçici Branch'ler

Feature Branch'leri

  • Format: feature/ozellik-adi
  • Yeni özellikler için oluşturulur
  • Develop branch'inden açılır
  • Tamamlandığında develop'a merge edilir
  • Örnek: feature/login-system

Bugfix Branch'leri

  • Format: bugfix/hata-aciklamasi
  • Hata düzeltmeleri için kullanılır
  • Develop branch'inden açılır
  • Örnek: bugfix/login-error

Hotfix Branch'leri

  • Format: hotfix/acil-duzeltme
  • Production'daki acil hatalar için
  • Main branch'inden açılır
  • Main ve develop'a merge edilir
  • Örnek: hotfix/security-patch

Release Branch'leri

  • Format: release/x.y.z
  • Sürüm hazırlığı için kullanılır
  • Develop'dan açılır
  • Main ve develop'a merge edilir
  • Örnek: release/1.2.0

Branch Yönetimi İlkeleri

İsimlendirme Kuralları

  • Küçük harfler kullanılır
  • Kelimeler tire (-) ile ayrılır
  • Açıklayıcı ve anlaşılır isimler seçilir
  • Prefix'ler kullanılır (feature/, bugfix/, etc.)

Merge Stratejisi

  • Pull Request kullanılır
  • Code review zorunludur
  • CI/CD testleri geçmelidir
  • Çakışmalar çözülmelidir

Dokümantasyon

  • Her branch'in amacı açıklanır
  • Değişiklikler CHANGELOG.md'de belirtilir
  • Release notları hazırlanır

Güvenlik

  • Main branch korunur
  • Direct push engellenir
  • Code review zorunlu tutulur
  • Branch protection rules uygulanır

En İyi Uygulamalar

Branch Temizliği

  • Merged branch'ler silinir
  • Eski branch'ler temizlenir
  • Düzenli branch bakımı yapılır

Commit Mesajları

  • Açıklayıcı commit mesajları
  • Conventional commits kullanımı
  • İlgili issue numaralarının belirtilmesi

Versiyon Yönetimi

  • Semantic versioning kullanımı
  • Release tag'leri oluşturulması
  • CHANGELOG güncel tutulması