Git'te Release Branch — nedir, amacı ve iş akışı

Yazar: IT Sectr Yayınlanma: 2026-05-10 Okuma süresi: 9 dk

Release Branch, belirli bir sürümü dağıtıma hazırlamak için develop'dan oluşturulan Git Flow'daki bir daldır. Bu dalda uygulama sürümü sabitlenir, son hatalar düzeltilir ve meta veriler güncellenir — yeni özellikler eklenmeden. Vincent Driessen, 2010'a göre, sürüm dalı, sürüm hazırlığını mevcut geliştirmeden ayırarak her iki faaliyetin paralel olarak yürütülmesine olanak tanır.

Önemli Noktalar

  • Release Branch — sürüm hazırlığı için geçici dal: sürüm sabitleme, hata düzeltmeleri ve meta veriler.
  • Sürüm izolasyonu, aynı anda yeni bir sürüm hazırlamayı ve develop'ta sonraki özelliklerin geliştirilmesine devam etmeyi sağlar.
  • Yeni özellik yasağı — sürüm dalına yalnızca düzeltmeler ve dokümantasyon eklenir, yeni kod eklenmez.
  • Çift birleştirme — tamamlandıktan sonra, sürüm dalı main'e (sürüm) ve develop'a (hata düzeltmeleri) birleştirilir.
  • Adlandırma — standart biçim release/X.Y.Z uygulama sürümüne göre.

Git'te Release Branch Nedir

Release Branch (sürüm dalı), ekibin mevcut özellik setinin yayına hazır olduğuna karar verdiğinde develop'tan oluşturulan Git Flow'taki geçici bir daldır. Son sürüm hazırlığı ne kadar sürerse (birkaç saatten birkaç güne kadar) o kadar süre var olur.

Sürüm dalının temel amacı, sonraki sürümlerin geliştirilmesini durdurmadan belirli bir özellik setini yayın için dondurmaktır. Sürüm dalı dağıtıma hazırlanırken, diğer geliştiriciler bir sonraki sürüm için develop'a özellik dallarını birleştirmeye devam edebilir.

Sürüm dalında yeni özellikler oluşturulmaz — yalnızca hata düzeltmeleri, uygulama sürümü güncellemesi, yerelleştirme ve dokümantasyon yapılır. Tüm çalışmalar tamamlandıktan sonra, sürüm dalı main'e (sürüm olarak işaretlenir) ve develop'a (hata düzeltmelerinin gelecek sürümlere ulaşması için) birleştirilir.

Atlassian, 2024'e göre, sürüm dalları düzenli yayın döngüleri olan projeler için kritik öneme sahiptir — yayın sürecinin öngörülebilirliğini ve istikrarını sağlarlar.

Sürüm dalının yaşam döngüsü

Sürüm dalının yaşam döngüsü, oluşturulmasından silinmesine kadar birkaç aşama içerir. Her aşamayı anlamak, ekibin eylemleri senkronize etmesine ve hatalardan kaçınmasına yardımcı olur.

  1. Oluşturma — develop'ın son commit'inden release/2.5.0 adında bir dal oluşturulur. develop, sonraki sürüm için özellik dallarını kabul etmeye devam eder.
  2. Hazırlık — sürüm dalında build.gradle, Info.plist ve diğer yapılandırma dosyalarındaki uygulama sürümü güncellenir.
  3. Hata düzeltme — son testler sırasında bulunan kritik hatalar düzeltilir. Yalnızca hatalar — yeni özellik yok.
  4. Son testler — QA ekibi sürüm dalında regresyon testleri yapar. Yeni hatalar aynı dalda düzeltilmek üzere gönderilir.
  5. Main'e birleştirme — sürüm dalı, --no-ff bayrağıyla main'e birleştirilir. Sürüm etiketi oluşturulur: v2.5.0.
  6. Develop'a birleştirme — sürüm dalı, sürümdeki hata düzeltmelerinin mevcut geliştirmeye ulaşması için develop'a geri birleştirilir.
  7. Silme — görevi tamamlandığı için sürüm dalı yerel ve uzak olarak silinir.

6. adım — develop'a geri birleştirme — sıklıkla unutulur, ancak kritik öneme sahiptir. Bu adım olmadan, sürüm dalında yapılan hata düzeltmeleri develop'a ulaşmaz ve aynı hatalar bir sonraki sürümde tekrar ortaya çıkabilir.

Sürüm dalı aşamalarının tipik süreleri

Sürüm dalının ömrü, sürümün karmaşıklığına ve develop'taki kod kalitesine bağlıdır. Ortalama olarak, orta boy bir mobil uygulama için hazırlık 2 ila 5 iş günü sürer.

Sürüm dalında neler yapılır

Sürüm dalında kesinlikle sınırlı bir görev seti yürütülür. Bu listeden herhangi bir sapma, Git Flow modelini ihlal eder ve sürüm istikrarı için risk oluşturur.

Değişiklik türüİzin verilirÖrnek
SürümlemeEvetbuild.gradle'da versionName güncelleme
Hata düzeltmeleriEvetBaşlangıçta çökme düzeltmesi
YerelleştirmeEvetYeni ekranlar için çeviriler ekleme
DokümantasyonEvetCHANGELOG ve README güncelleme
Yeni özelliklerHayırYeni profil ekranı ekleme
Yeniden düzenlemeHayırAğ katmanını yeniden yazma
Kütüphane güncellemeleriDikkatliYalnızca hata düzeltmeleri için yama sürümleri

Yeni özellik yasağı kuralı, sürüm dalında en önemlisidir. Bir özellik sürüme yetişmediyse, sonraki döngüyü bekler. Tamamlanmamış bir özelliği sürüm dalına itmeye çalışmak, son teslim tarihlerinin kaçırılmasının ve üretim hatalarının başlıca nedenidir.

Mobil projede sürüm güncelleme

Sürüm dalında uygulama sürüm numarası zorunlu olarak güncellenir. Android için bunlar build.gradle'daki versionCode ve versionName alanlarıdır; iOS için — Info.plist'teki CFBundleShortVersionString.

groovy
// build.gradle (uygulama düzeyi) — sürüm dalında sürüm güncelleme
android {
    defaultConfig {
        versionCode 42
        versionName "2.5.0"
    }
}

// iOS için — Info.plist güncelleme
// CFBundleShortVersionString = 2.5.0
// CFBundleVersion = 42

Release ve hotfix arasındaki farklar

Acemi geliştiriciler genellikle release ve hotfix dallarını karıştırır, ancak amaçları temelde farklıdır. Yanlış dal türünü seçmek, kritik bir düzeltmeyi geciktirebilir veya sürüm sürecini bozabilir.

  • Kaynak — release develop'tan oluşturulur, hotfix main'den oluşturulur. Bu, diğer her şeyi belirleyen ana farktır.
  • Acilik — release planlıdır: ekip hazırlığa ne zaman başlayacağına karar verir. Hotfix acildir: üretimdeki bir sorun acil düzeltme gerektirir.
  • İçerik — release birden fazla düzeltme ve sürüm güncellemesi içerebilir. Hotfix yalnızca bir kritik düzeltme içerir.
  • Birleştirme — release main ve develop'a birleştirilir. Hotfix de main ve develop'a birleştirilir, ancak öncelikli olarak.
  • Yaşam süresi — release 1 ila 7 gün yaşar. Hotfix 30 dakika ila 1 gün yaşar.

Sürüm hazırlığı sırasında (sürüm dalında) bir hata bulunursa, bu normal bir hata düzeltmesidir. Üretimde (main'de) bir hata bulunursa, bu bir hotfix'tir ve sürüm dalı zaten mevcut olsa bile main'den oluşturulur.

Sürüm dalı adlandırma kuralları

Birleşik bir sürüm dalı adlandırma standardı, depo gezinmesini basitleştirir ve CI/CD sistemlerinin bir dalın sürüm sürecine ait olduğunu otomatik olarak algılamasını sağlar.

  • release/X.Y.Z — standart Git Flow biçimi, X.Y.Z sürüm numarasıdır. Örnek: release/2.5.0.
  • release/ad — sürüm kod adıyla alternatif biçim. Örnek: release/merlin.
  • release/tarih — sürüm tarihiyle biçim. Sürüm tarihten daha önemli olduğu için nadiren kullanılır. Örnek: release/2024-12-01.

release/X.Y.Z biçimi tercih edilir, çünkü dalı sürüme atanacak sürüm numarasına açıkça bağlar. Bu, CI/CD betikleriyle aramayı ve otomatik işlemeyi basitleştirir.

Develop'a geri birleştirme stratejisi

Sürüm dalının develop'a geri birleştirmesi (merge back), en önemli ve aynı zamanda en sık atlanan işlemlerden biridir. Bu işlem olmadan, sürüm dalında yapılan tüm hata düzeltmeleri yalnızca sürüm sürümünde kalır ve sonraki sürüm döngüsüne ulaşmaz.

Geri birleştirme işlemi, sürüm dalı main'e birleştirildikten sonra gerçekleştirilir. Önce release develop'a birleştirilir, ardından silinir. Bu, develop'ın sürüm hazırlığı sırasında yapılan tüm düzeltmeleri içermesini sağlar.

Geri birleştirmeden sonra çakışmalar meydana gelebilir — özellikle aynı dosyaları değiştiren yeni özellik dalları develop'ta zaten görünmüşse. Sürümden sorumlu geliştirici bu çakışmaları çözer ve develop'ı sunucuya iletir.

Bazı ekipler, geçmişi doğrusal tutmak için geri birleştirme için merge yerine rebase kullanır. Ancak merge, develop için daha güvenlidir çünkü diğer geliştiriciler tarafından zaten kullanılıyor olabilecek commit geçmişini yeniden yazmaz.

Release ile çalışmak için komut örnekleri

Mobil uygulama sürümü 2.5.0'ın başarılı bir şekilde yayınlanmasının ardından sürüm dalıyla çalışmanın tam döngüsüne bakalım: oluşturmadan silmeye kadar.

bash
# 1. Develop'tan sürüm dalı oluştur
git checkout develop
git pull origin develop
git checkout -b release/2.5.0

# 2. Sürüm ve hata düzeltmelerini güncelle
git add build.gradle
git commit -m "Bump version to 2.5.0"

# 3. Hataları düzelt (yalnızca bugfixes)
git add src/fix/
git commit -m "Fix crash on payment screen"

# 4. Sürüm dalını sunucuya gönder
git push origin release/2.5.0

# 5. Release'i main'e birleştir
git checkout main
git pull origin main
git merge --no-ff release/2.5.0
git tag -a v2.5.0 -m "Release 2.5.0"
git push origin main --tags

# 6. Develop'a geri birleştir
git checkout develop
git merge --no-ff release/2.5.0
git push origin develop

# 7. Sürüm dalını sil
git branch -d release/2.5.0
git push origin --delete release/2.5.0

5 ve 6 numaralı komutlar — çift birleştirme — kritik öneme sahiptir. Önce main sürüm kodunu ve etiketi alır, ardından develop sürümdeki hata düzeltmeleriyle senkronize olur. 6. adım atlanırsa, sürümdeki düzeltmeler sonraki geliştirme döngüsüne ulaşmaz.

Sürüm sürecini otomatikleştirme

Düzenli sürümleri olan mobil projeler için, sürüm dalı oluşturma ve sürüm güncelleme süreci CI/CD betikleri aracılığıyla otomatikleştirilebilir. GitHub Actions, bir düğmeye basıldığında otomatik sürüm güncellemesiyle bir sürüm dalı oluşturan bir iş akışı oluşturmayı sağlar.

Düzenli sürümleri olan mobil projeler için, sürüm dalı oluşturma ve sürüm güncelleme süreci CI/CD betikleri aracılığıyla otomatikleştirilebilir. GitHub Actions, bir düğmeye basıldığında otomatik sürüm güncellemesiyle bir sürüm dalı oluşturan bir iş akışı oluşturmayı sağlar.

yaml
# GitHub Actions — sürüm dalı oluşturmayı otomatikleştirme
name: Create Release Branch

on:
  workflow_dispatch:
    inputs:
      version:
        description: 'Release version (e.g. 2.5.0)'
        required: true

jobs:
  create-release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Create release branch
        run: |
          git checkout develop
          git checkout -b release/${{ inputs.version }}
          git push origin release/${{ inputs.version }}

Sıkça sorulan sorular

Aynı anda kaç sürüm dalı olabilir?

Git Flow'u takip ediyorsanız aynı anda yalnızca bir sürüm dalı. İki aktif sürüm dalına sahip olmak, ekibin paralel olarak iki sürüm yayınlamaya çalıştığı anlamına gelir — bu, sıralı sürümler ilkesini ihlal eder ve sürümler konusunda karışıklık yaratır.

Sürüm dalı tamamlanmamış bir özellik içeriyorsa ne yapmalı?

git revert ile sürüm dalından tamamlanmamış özelliğin commit'lerini kaldırın ve özelliği bir sonraki sürüme erteleyin. Tamamlanmamış işlevselliği asla üretime göndermeyin — teknik borç ve olası hatalar aceleye değmez.

Sürüm dalı oluşturma atlanabilir mi?

Tek düzeltmeli basit sürümler için sürüm dalı atlanabilir ve doğrudan develop'tan main'e birleştirilebilir. Ancak standart sürümler için sürüm dalı zorunludur — sürümü sabitler, hazırlığı izole eder ve hata düzeltmelerinin çift birleştirmesini garanti eder.

Main zaten birleştirmeyi aldıysa sürüm nasıl iptal edilir?

Tüm sürüm değişikliklerini geri alan yeni bir commit oluşturmak için main'de git revert kullanın. Ardından git push origin --delete vX.Y.Z komutuyla sürüm etiketini silin. Sorunları düzelttikten sonra, artırılmış yama numarasıyla yeni bir sürüm dalı oluşturun.

Release candidate ve release branch arasındaki fark nedir?

Release candidate (RC), son testlerden geçen bir yapı yapısıdır. Release branch, release candidate'in oluşturulduğu Git dalıdır. Bir sürüm dalı, hatalar düzeltildikçe birden fazla RC yapısı (RC1, RC2, vb.) üretebilir.

Özet

  • Release Branch — son sürüm hazırlığı için geçici Git Flow dalı: sürümleme, hata düzeltmeleri ve yerelleştirme (yeni özellik yok).
  • Geliştirme izolasyonu — sürüm dalı, aynı anda bir sürüm hazırlamayı ve develop'ta sonraki özelliklerin geliştirilmesine devam etmeyi sağlar.
  • Çift birleştirme — tamamlandıktan sonra, release main'e (sürüm etiketi) ve develop'a (hata düzeltme senkronizasyonu) birleştirilir.
  • Yeni özellik yasağı — sürüm dalına yalnızca düzeltmeler ve meta veriler eklenir. Yeni işlevsellik bir sonraki sürüme gider.
  • Adlandırma — standart biçim release/X.Y.Z SemVer sürüm numarasıyla.
  • Develop'a geri birleştirme genellikle atlanan zorunlu bir adımdır, ancak bu adım olmadan sürüm hata düzeltmeleri gelecek sürümler için kaybolur.
  • Öneri: CI/CD aracılığıyla sürüm dalı oluşturmayı ve sürüm güncellemesini otomatikleştirin ve çift birleştirmeyi sürüm kontrol listesinin zorunlu bir öğesi yapın.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun