Git-da Release Branch — bu nima, maqsadi va ish jarayoni

Muallif: IT Sectr Nashr etilgan: 2026-05-10 O'qish vaqti: 9 daq

Release Branch — bu Git Flow-dagi shoxcha bo'lib, ma'lum bir relizni chiqarishga tayyorlash uchun develop-dan yaratiladi. Unda ilova versiyasi mustahkamlanadi, so'nggi xatolar tuzatiladi va metamaʼlumotlar yangilanadi — yangi funksiyalar qo'shilmagan holda. Vincent Driessen, 2010 maʼlumotlariga ko'ra, release shoxchasi reliz tayyorlashni joriy ishlanmadan ajratadi, bu ikkala faoliyatni parallel olib borishga imkon beradi.

Asosiy fikrlar

  • Release Branch — relizni tayyorlash uchun vaqtinchalik shoxcha: versiyani mustahkamlash, xato tuzatishlar va metamaʼlumotlar.
  • Relizni izolyatsiyasi bir vaqtning o'zida yangi relizni tayyorlash va develop-da keyingi funksiyalarni ishlab chiqishni davom ettirishga imkon beradi.
  • Yangi funksiyalarni taqiqlash — release shoxchasiga faqat tuzatishlar va hujjatlar kiritiladi, yangi kod yo'q.
  • Ikki tomonlama birlashish — tugatilgandan so'ng, release shoxchasi main-ga (reliz) va qaytib develop-ga (xato tuzatishlar) birlashtiriladi.
  • Nomlash — standart format release/X.Y.Z ilova versiyasiga ko'ra.

Git-da Release Branch nima

Release Branch (reliz shoxchasi) — bu Git Flow-dagi vaqtinchalik shoxcha bo'lib, jamoa joriy funksiyalar to'plami chiqarishga tayyor deb qaror qilganda develop-dan yaratiladi. U relizning yakuniy tayyorgarligi qancha davom etsa, shuncha mavjud bo'ladi — bir necha soatdan bir necha kungacha.

Release shoxchasining asosiy maqsadi — keyingi versiyalar ishlanmasini to'xtatmasdan, reliz uchun ma'lum funksiyalar to'plamini muzlatishdir. Release shoxchasi chiqarishga tayyorlanayotganda, boshqa ishlab chiqaruvchilar keyingi reliz uchun feature shoxchalarini develop-ga birlashtirishni davom ettirishlari mumkin.

Release shoxchasida yangi funksiyalar yaratilmaydi — faqat xato tuzatishlar, ilova versiyasini yangilash, lokalizatsiya va hujjatlar. Barcha ishlar tugagach, release shoxchasi main-ga birlashtiriladi (reliz sifatida belgilanadi) va qaytib develop-ga (xato tuzatishlar kelajak versiyalarga o'tishi uchun).

Atlassian, 2024 maʼlumotlariga ko'ra, release shoxchalari muntazam reliz sikliga ega loyihalar uchun muhim ahamiyatga ega — ular chiqarish jarayonining bashorat qilish mumkinligi va barqarorligini taʼminlaydi.

Release shoxchasining hayot sikli

Hayot sikli — release shoxchasining yaratilishdan o'chirilishgacha bo'lgan bir necha bosqichni o'z ichiga oladi. Har bir bosqichni tushunish jamoaga harakatlarni muvofiqlashtirish va xatolardan qochishga yordam beradi.

  1. Yaratish — develop-ning so'nggi commit-idan release/2.5.0 nomli shoxcha yaratiladi. develop keyingi versiya uchun feature shoxchalarini qabul qilishni davom ettiradi.
  2. Tayyorgarlik — release shoxchasida build.gradle, Info.plist va boshqa konfiguratsiya fayllarida ilova versiyasi yangilanadi.
  3. Xato tuzatish — yakuniy test jarayonida topilgan muhim xatolar tuzatiladi. Faqat xatolar — yangi funksiyalar yo'q.
  4. Yakuniy test — QA jamoasi release shoxchasida regressiya testini o'tkazadi. Yangi xatolar tuzatish uchun o'sha shoxchaga yuboriladi.
  5. Main-ga birlashish — release shoxchasi --no-ff bayrog'i bilan main-ga birlashtiriladi. Reliz tegi yaratiladi: v2.5.0.
  6. Develop-ga birlashish — release shoxchasi qaytib develop-ga birlashtiriladi, shunda relizdagi xato tuzatishlar joriy ishlanmaga o'tadi.
  7. O'chirish — release shoxchasi lokal va masofadan o'chiriladi, chunki uning vazifasi bajarilgan.

6-band — develop-ga qaytib birlashish — ko'pincha unutiladi, lekin bu juda muhim. Usiz release-da qilingan xato tuzatishlar develop-ga o'tmaydi va keyingi relizda xuddi shu xatolar yana paydo bo'lishi mumkin.

Release shoxchasi bosqichlarining odatiy davomiyliklari

Release shoxchasining umri relizning murakkabligi va develop-dagi kod sifatiga bog'liq. O'rtacha o'lchamdagi mobil ilova uchun tayyorgarlik odatda 2 dan 5 ish kunigacha davom etadi.

Release shoxchasida nima qilinadi

Release shoxchasida qat'iy cheklangan vazifalar to'plami bajariladi. Ushbu ro'yxatdan har qanday chetga chiqish Git Flow modelini buzadi va reliz barqarorligi uchun xavf tug'diradi.

O'zgarish turiRuxsat etilganMisol
VersiyalashHabuild.gradle da versionName ni yangilash
Xato tuzatishlarHaIshga tushirishdagi crash ni tuzatish
LokalizatsiyaHaYangi ekranlar uchun tarjimalar qo'shish
HujjatlarHaCHANGELOG va README ni yangilash
Yangi funksiyalarYo'qYangi profil ekranini qo'shish
RefaktoringYo'qTarmoq qatlamini qayta yozish
Kutubxonalarni yangilashEhtiyot bilanFaqat xato tuzatishlar uchun patch versiyalar

Yangi funksiyalarni taqiqlash qoidasi — release shoxchasidagi eng muhim qoida. Agar funksiya relizga ulgurmagan bo'lsa, keyingi siklini kutadi. Tugallanmagan funksiyani release shoxchasiga kiritish urinishi — muddatlarni buzish va ishlab chiqarishdagi xatolarning asosiy sababidir.

Mobil loyihada versiyani yangilash

Release shoxchasida ilova versiyasining raqami majburiy ravishda yangilanadi. Android uchun bu build.gradle dagi versionCode va versionName maydonlari, iOS uchun — Info.plist dagi CFBundleShortVersionString.

groovy
// build.gradle (app-level) — release shoxchasida versiyani yangilash
android {
    defaultConfig {
        versionCode 42
        versionName "2.5.0"
    }
}

// iOS uchun — Info.plist ni yangilash
// CFBundleShortVersionString = 2.5.0
// CFBundleVersion = 42

Release va hotfix o'rtasidagi farqlar

Boshlang'ich ishlab chiqaruvchilar ko'pincha release va hotfix shoxchalarini chalkashtirishadi, garchi ularning maqsadi tubdan farq qilsa. Shoxcha turini tanlashdagi xato muhim tuzatishning kechikishiga yoki reliz jarayonining buzilishiga olib kelishi mumkin.

  • Manba — release develop-dan yaratiladi, hotfix — main-dan. Bu qolgan hamma narsani belgilaydigan asosiy farq.
  • Shoshilinchlik — release rejalashtirilgan: jamoa o'zi tayyorgarlikni qachon boshlashni hal qiladi. Hotfix shoshilinch: ishlab chiqarishdagi muammo darhol tuzatishni talab qiladi.
  • Tarkib — release bir nechta tuzatish va versiya yangilanishini o'z ichiga olishi mumkin. Hotfix faqat bitta muhim tuzatishni o'z ichiga oladi.
  • Birlashish — release main va develop-ga birlashtiriladi. Hotfix ham main va develop-ga birlashtiriladi, lekin ustuvor tartibda.
  • Yashash muddati — release 1 kundan 7 kungacha yashaydi. Hotfix 30 daqiqadan 1 kungacha yashaydi.

Agar xato relizni tayyorlash jarayonida (release shoxchasida) topilgan bo'lsa — bu oddiy xato tuzatish. Agar xato ishlab chiqarishda (main da) topilgan bo'lsa — bu hotfix va u main-dan yaratiladi, hatto release shoxchasi mavjud bo'lsa ham.

Release shoxchalarini nomlash qoidalari

Yagona release shoxchalarini nomlash standarti repozitoriy bo'ylab navigatsiyani soddalashtiradi va CI/CD tizimlariga shoxchaning reliz jarayoniga tegishli ekanligini avtomatik aniqlashga imkon beradi.

  • release/X.Y.Z — Git Flow standart formati, bu yerda X.Y.Z reliz versiyasi. Misol: release/2.5.0.
  • release/nom — relizning kod nomi bilan muqobil format. Misol: release/merlin.
  • release/sana — reliz sanasi bilan format. Kamdan kam ishlatiladi, chunki versiya sanadan muhimroq. Misol: release/2024-12-01.

release/X.Y.Z formati — afzal ko'riladi, chunki u shoxchani relizga tayinlanadigan versiya raqami bilan aniq bog'laydi. Bu qidirish va CI/CD skriptlari bilan avtomatik ishlov berishni soddalashtiradi.

Develop-ga qaytib birlashish strategiyasi

Qaytib birlashish (merge back) release shoxchasini develop-ga — eng muhim va bir vaqtning o'zida tez-tez o'tkazib yuboriladigan operatsiyalardan biridir. Usiz release-da qilingan barcha xato tuzatishlar faqat reliz versiyasida qoladi va keyingi reliz sikliga o'tmaydi.

Qaytib birlashish jarayoni release shoxchasi allaqachon main-ga birlashtirilganidan so'ng amalga oshiriladi. Avval release develop-ga birlashtiriladi, keyin — o'chiriladi. Bu develop relizni tayyorlash jarayonida qilingan barcha tuzatishlarni o'z ichiga olishini kafolatlaydi.

Qaytib birlashishdan so'ng konfliktlar yuzaga kelishi mumkin — ayniqsa develop-da bir xil fayllarni o'zgartirgan yangi feature shoxchalari paydo bo'lgan bo'lsa. Reliz uchun mas'ul ishlab chiqaruvchi bu konfliktlarni hal qiladi va develop-ni serverga yuboradi.

Ba'zi jamoalar qaytib birlashish uchun merge o'rniga rebase dan foydalanadi, shunda tarix chiziqli bo'ladi. Biroq merge develop uchun xavfsizroq, chunki boshqa ishlab chiqaruvchilar tomonidan allaqachon ishlatilgan commitlar tarixini qayta yozmaydi.

Release bilan ishlash uchun buyruq namunalari

Release shoxchasi bilan to'liq ishlash siklini ko'rib chiqaylik: 2.5.0 versiyali mobil ilovaning muvaffaqiyatli relizidan so'ng yaratishdan o'chirishgacha.

bash
# 1. Develop-dan release shoxchasini yaratish
git checkout develop
git pull origin develop
git checkout -b release/2.5.0

# 2. Versiyani yangilash va xato tuzatishlar
git add build.gradle
git commit -m "Bump version to 2.5.0"

# 3. Xatolarni tuzatish (faqat bugfixes)
git add src/fix/
git commit -m "Fix crash on payment screen"

# 4. Release shoxchasini serverga yuborish
git push origin release/2.5.0

# 5. Release ni main-ga birlashtirish
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-ga qaytib birlashish
git checkout develop
git merge --no-ff release/2.5.0
git push origin develop

# 7. Release shoxchasini o'chirish
git branch -d release/2.5.0
git push origin --delete release/2.5.0

5 va 6-buyruqlar — ikki tomonlama birlashish — juda muhim. Avval main reliz kodini va tegni oladi, keyin develop release-dagi xato tuzatishlar bilan sinxronlanadi. Agar 6-qadam o'tkazib yuborilsa, relizdagi tuzatishlar keyingi ishlanma siklga o'tmaydi.

Reliz jarayonini avtomatlashtirish

Muntazam relizlarga ega mobil loyihalar uchun release shoxchasini yaratish va versiyani yangilash jarayoni CI/CD skriptlari orqali avtomatlashtirilishi mumkin. GitHub Actions tugmani bosganda avtomatik versiya yangilanishi bilan release shoxchasini yaratadigan workflow yaratishga imkon beradi.

Muntazam relizlarga ega mobil loyihalar uchun release shoxchasini yaratish va versiyani yangilash jarayoni CI/CD skriptlari orqali avtomatlashtirilishi mumkin. GitHub Actions tugmani bosganda avtomatik versiya yangilanishi bilan release shoxchasini yaratadigan workflow yaratishga imkon beradi.

yaml
# GitHub Actions — release shoxchasini yaratishni avtomatlashtirish
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 }}

Tez-tez beriladigan savollar

Bir vaqtning o'zida nechta release shoxchasi bo'lishi mumkin?

Git Flow-ga rioya qilsangiz, bir vaqtning o'zida faqat bitta release shoxchasi bo'lishi mumkin. Ikki faol release shoxchasining mavjudligi jamoa ikkita relizni parallel chiqarishga urinayotganini anglatadi — bu ketma-ket relizlar prinsipini buzadi va versiyalar bilan chalkashlik yaratadi.

Agar release shoxchasi tugallanmagan funksiyani o'z ichiga olsa nima qilish kerak?

git revert orqali release shoxchasidan tugallanmagan funksiyaning commitlarini olib tashlang va funksiyani keyingi relizga qoldiring. Hech qachon tugallanmagan funksiyani ishlab chiqarishga chiqarmang — texnik qarz va potentsial xatolar shoshilishga arzimaydi.

Release shoxchasini yaratishni o'tkazib yuborish mumkinmi?

Bitta tuzatishga ega oddiy relizlar uchun release shoxchasini o'tkazib yuborib, to'g'ridan-to'g'ri develop-dan main-ga birlashish mumkin. Biroq standart relizlar uchun release shoxchasi majburiy — versiyani mustahkamlaydi, tayyorgarlikni izolyatsiya qiladi va xato tuzatishlarning ikki tomonlama birlashishini taʼminlaydi.

Main allaqachon birlashishni olgan bo'lsa, relizni qanday bekor qilish kerak?

Main-da relizning barcha o'zgarishlarini bekor qiladigan yangi commit yaratish uchun git revert dan foydalaning. So'ngra git push origin --delete vX.Y.Z buyrug'i bilan reliz tegini o'chiring. Muammolarni tuzatgandan so'ng, oshirilgan patch raqami bilan yangi release shoxchasini yarating.

Release candidate va release branch o'rtasidagi farq nima?

Release candidate (RC) — yakuniy testdan o'tadigan kompilyatsiya artefaktidir. Release branch — bu release candidate yaratiladigan Git shoxchasidir. Bitta release shoxchasi xatolar tuzatilgan sari bir nechta RC kompilyatsiyalarini (RC1, RC2 va h.k.) yaratishi mumkin.

Xulosa

  • Release Branch — relizni yakuniy tayyorlash uchun vaqtinchalik Git Flow shoxchasi: yangi funksiyalarsiz versiyalash, xato tuzatishlar va lokalizatsiya.
  • Ishlanmani izolyatsiyasi — release shoxchasi bir vaqtning o'zida relizni tayyorlash va develop-da keyingi funksiyalar ishlanmasini davom ettirishga imkon beradi.
  • Ikki tomonlama birlashish — tugatilgandan so'ng, release main-ga (reliz tegi) va qaytib develop-ga (xato tuzatishlarni sinxronlash) birlashtiriladi.
  • Yangi funksiyalarni taqiqlash — release shoxchasiga faqat tuzatishlar va metamaʼlumotlar kiritiladi. Yangi funksionallik — keyingi relizga.
  • Nomlash — SemVer bo'yicha versiya raqami bilan standart format release/X.Y.Z.
  • Develop-ga qaytib birlashish — tez-tez o'tkazib yuboriladigan majburiy qadam, lekin usiz relizning xato tuzatishlari kelajak versiyalar uchun yo'qoladi.
  • Tavsiya: release shoxchasini yaratish va versiyani yangilashni CI/CD orqali avtomatlashtiring, ikki tomonlama birlashishni esa reliz tekshirish ro'yxatining majburiy bandiga aylantiring.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing