Bosh sahifa Wiki Branch

Branch

BranchGit repository ichida alohida ish yo‘nalishini bildiradigan tushuncha. Branch yordamida dasturchi asosiy kodga ta’sir qilmasdan yangi funksiya, xatolik tuzatish, tajriba yoki release ustida ishlashi mumkin.

Branch Git’dagi eng muhim tushunchalardan biri hisoblanadi. U jamoaviy ishlash, parallel rivojlantirish va kodni tartibli boshqarishda keng qo‘llanadi.

Vazifasi

Branch kodning alohida yo‘nalishda rivojlanishini ta’minlaydi.

Branch quyidagi vazifalarni bajaradi:

  • yangi funksiya ustida alohida ishlash;
  • asosiy kodni himoya qilish;
  • xatoliklarni alohida tuzatish;
  • tajriba kodlarini asosiy branchdan ajratish;
  • release tayyorlash;
  • hotfix qilish;
  • jamoa a’zolarining parallel ishlashini ta’minlash;
  • pull request orqali kodni tekshirish;
  • o‘zgarishlarni bosqichma-bosqich birlashtirish.

Masalan, main branch ishlab turgan kodni saqlaydi, feature/login branch esa login funksiyasi ustida ishlash uchun ochiladi.

Branch qanday ishlaydi?

Git’da branch commitlar zanjiridagi ma’lum bir nuqtani ko‘rsatib turuvchi ko‘rsatkich sifatida ishlaydi. Yangi commit yaratilganda, joriy branch shu commitga siljiydi.

Oddiy jarayon:

  • repositoryda asosiy branch mavjud bo‘ladi;
  • yangi ish uchun alohida branch yaratiladi;
  • dasturchi shu branchda kod yozadi;
  • commitlar yaratiladi;
  • ish tugagach branch asosiy branch bilan birlashtiriladi;
  • kerak bo‘lsa branch o‘chiriladi.

Branchlar Git tarixida turli ish yo‘nalishlarini ajratib ko‘rsatadi.

Main branch

Main branch — repositorydagi asosiy branch. Ko‘p loyihalarda barqaror yoki asosiy kod shu branchda saqlanadi.

Main branch quyidagi nomlarda uchrashi mumkin:

  • main;
  • master;
  • production;
  • stable.

Asosiy branch odatda production, release yoki umumiy ishlab chiqish jarayonining markaziy nuqtasi sifatida ishlatiladi.

Feature branch

Feature branch — yangi funksiya yoki imkoniyat yaratish uchun ochiladigan branch.

Feature branch misollari:

  • feature/login;
  • feature/payment;
  • feature/user-profile;
  • feature/search;
  • feature/admin-dashboard.

Feature branch ichida yangi kod yoziladi, commit qilinadi va keyin pull request orqali asosiy branchga qo‘shilishi mumkin.

Bugfix branch

Bugfix branch — dasturdagi xatolikni tuzatish uchun ochiladigan branch.

Bugfix branch misollari:

  • bugfix/navbar-overflow;
  • bugfix/login-error;
  • bugfix/payment-validation;
  • bugfix/mobile-menu;
  • bugfix/api-response.

Bu branch xatolikni asosiy koddan alohida tuzatishga yordam beradi.

Hotfix branch

Hotfix branch — production muhitidagi shoshilinch xatolikni tez tuzatish uchun ochiladigan branch.

Hotfix branch quyidagi holatlarda ishlatiladi:

  • sayt ishlamay qolsa;
  • xavfsizlik xatosi topilsa;
  • to‘lov tizimida muammo chiqsa;
  • muhim API javobi buzilsa;
  • productiondagi kritik xatolik tuzatilsa.

Hotfix branch odatda asosiy barqaror branchdan ochiladi va tuzatish tayyor bo‘lgach tezda merge qilinadi.

Release branch

Release branch — yangi versiyani tayyorlash uchun ishlatiladigan branch. Release branch’da kod barqarorlashtiriladi, xatolar tuzatiladi va versiya chiqarishga tayyorlanadi.

Release branch misollari:

  • release/v1.0.0;
  • release/v1.2.0;
  • release/2026-07;
  • release/mobile-update.

Release branch versiya boshqaruvi va deployment jarayonlarida ishlatiladi.

Develop branch

Develop branch — ayrim Git workflowlarda yangi o‘zgarishlar yig‘iladigan asosiy ishlab chiqish branchi. Bu branch odatda main branchdan oldingi bosqich sifatida ishlatiladi.

Develop branch’da quyidagilar jamlanishi mumkin:

  • yangi featurelar;
  • bugfixlar;
  • testdan o‘tayotgan o‘zgarishlar;
  • keyingi release uchun tayyorlanayotgan kod;
  • integratsiya qilingan branchlar.

Git Flow kabi workflowlarda develop branch muhim o‘rin tutadi.

Branch yaratish

Git’da yangi branch yaratish uchun git branch yoki git switch -c buyruqlari ishlatiladi.

Misol:

git branch feature/login

Bu buyruq feature/login nomli yangi branch yaratadi.

Yangi branch yaratib, darhol unga o‘tish uchun:

git switch -c feature/login

Yoki eski sintaksisda:

git checkout -b feature/login

Branchga o‘tish

Bir branchdan boshqasiga o‘tish uchun git switch yoki git checkout ishlatiladi.

Misol:

git switch main

Yoki:

git checkout main

Bu buyruqlar joriy ishchi holatni tanlangan branchga o‘tkazadi.

Branchga o‘tilganda working directory shu branchdagi kod holatiga moslashadi.

Branchlarni ko‘rish

Repositorydagi branchlarni ko‘rish uchun git branch buyrug‘i ishlatiladi.

Misol:

git branch

Bu buyruq local branchlar ro‘yxatini ko‘rsatadi.

Remote branchlarni ham ko‘rish uchun:

git branch -a

Bu holatda local va remote branchlar birgalikda ko‘rinadi.

Joriy branch

Joriy branch — dasturchi hozir ishlayotgan branch. git branch buyrug‘i chiqarilganda joriy branch oldida * belgisi turadi.

Masalan:

* feature/login

main

Bu yerda feature/login joriy branch hisoblanadi.

Joriy branchdagi commitlar aynan shu branch tarixiga qo‘shiladi.

Branch nomlash

Branch nomi odatda uning vazifasini bildiradi. Nomlash orqali branch nima uchun ochilgani tushunarli bo‘ladi.

Branch nomlariga misollar:

  • feature/auth;
  • feature/payment-page;
  • bugfix/header-mobile;
  • hotfix/server-error;
  • release/v2.0;
  • docs/update-readme;
  • refactor/user-service.

Branch nomlarida ko‘pincha yo‘nalish va qisqa tavsif birga yoziladi.

Branch va commit

Branch commitlar bilan bevosita bog‘liq. Har bir branch ma’lum commitga ishora qiladi. Yangi commit yaratilganda, branch shu yangi commitga siljiydi.

Masalan:

  • main branch oxirgi barqaror commitga ishora qiladi;
  • feature/login branch login funksiyasi commitlariga ega bo‘ladi;
  • feature tugagach, bu commitlar main branchga merge qilinadi.

Branchlar commit tarixini turli yo‘nalishlarga ajratadi.

HEADGit’da joriy branch yoki joriy commitni ko‘rsatadigan maxsus ko‘rsatkich. Odatda HEAD hozir ishlayotgan branchning oxirgi commitiga ishora qiladi.

Masalan, dasturchi feature/login branchida ishlayotgan bo‘lsa, HEAD shu branchning oxirgi commitiga bog‘langan bo‘ladi.

HEAD quyidagi jarayonlarda ishlatiladi:

  • branch o‘zgartirish;
  • commitlar tarixida harakatlanish;
  • reset qilish;
  • diff ko‘rish;
  • detached HEAD holatini aniqlash.

Detached HEAD

Detached HEAD — HEAD biror branchga emas, to‘g‘ridan-to‘g‘ri ma’lum commitga ishora qilayotgan holat.

Detached HEAD quyidagi holatlarda yuzaga kelishi mumkin:

  • eski commitga checkout qilinganda;
  • tagga o‘tilganda;
  • branchsiz commit holati ko‘rilganda;
  • tarixdagi ma’lum nuqta tekshirilganda.

Bu holatda yaratilgan commitlar branchga bog‘lanmasa, keyinchalik yo‘qolib qolishi mumkin.

Merge

Merge — bir branchdagi o‘zgarishlarni boshqa branchga qo‘shish jarayoni.

Masalan:

git switch main

git merge feature/login

Bu buyruqlar feature/login branchidagi o‘zgarishlarni main branchga qo‘shadi.

Merge natijasida branchlar tarixi birlashtiriladi.

Merge commit

Merge commitmerge jarayonida yaratiladigan maxsus commit. U ikki branch tarixining birlashganini bildiradi.

Merge commit quyidagi holatlarda paydo bo‘lishi mumkin:

  • feature branch asosiy branchga qo‘shilganda;
  • Git tarixi avtomatik fast-forward bo‘la olmaganda;
  • branchlar alohida commitlarga ega bo‘lganda.

Merge commit repository tarixida branchlar birlashgan nuqtani ko‘rsatadi.

Fast-forward merge

Fast-forward merge — branchlar tarixi oddiy siljish orqali birlashtiriladigan merge turi. Bu holatda alohida merge commit yaratilmaydi.

Fast-forward merge quyidagi vaziyatda bo‘ladi:

  • asosiy branch feature branch ochilgandan keyin o‘zgarmagan bo‘lsa;
  • feature branch commitlari asosiy branch davomiga to‘g‘ri kelsa;
  • Git branch ko‘rsatkichini oldinga siljitish orqali merge qila olsa.

Bu merge turi Git tarixini oddiyroq ko‘rinishda saqlaydi.

Rebase

Rebase — bir branch commitlarini boshqa branchning so‘nggi holati ustiga ko‘chirish jarayoni.

Rebase orqali branch tarixi quyidagicha o‘zgaradi:

  • feature branch yangi asosga ko‘chadi;
  • commitlar qayta joylashtiriladi;
  • tarix chiziqliroq ko‘rinishi mumkin;
  • conflict chiqishi mumkin.

Rebase Git tarixini qayta yozishi mumkin bo‘lgan amal hisoblanadi.

Conflict

ConflictGit ikki branchdagi o‘zgarishlarni avtomatik birlashtira olmagan holat.

Conflict quyidagi holatlarda chiqishi mumkin:

  • bir xil faylning bir xil qatori o‘zgartirilganda;
  • bir branch faylni o‘chirib, boshqasi o‘zgartirganda;
  • merge yoki rebase jarayonida mos kelmaydigan o‘zgarishlar bo‘lganda.

Conflict bo‘lgan fayllarda Git maxsus belgilar qo‘yadi. Dasturchi kerakli kodni tanlab, conflictni hal qiladi.

Remote branch

Remote branch — masofaviy repositoryda joylashgan branch. GitHub, GitLab yoki boshqa Git serverdagi branchlar remote branch hisoblanadi.

Remote branchlarga misollar:

  • origin/main;
  • origin/develop;
  • origin/feature/login;
  • origin/release/v1.0.

Remote branchlar jamoa bilan kod almashishda ishlatiladi.

Tracking branch

Tracking branch — local branch bilan remote branch o‘rtasidagi bog‘lanish. Tracking branch orqali Git qaysi remote branch bilan push va pull qilishni biladi.

Masalan, local main branch origin/main branchni kuzatishi mumkin.

Tracking branch quyidagi amallarda ishlatiladi:

  • git pull;
  • git push;
  • remote yangilanishlarni olish;
  • branch holatini solishtirish;
  • local va remote farqini ko‘rish.

Branchni remote’ga yuborish

Yangi local branchni remote repositoryga yuborish uchun git push ishlatiladi.

Misol:

git push -u origin feature/login

Bu buyruq:

  • feature/login branchni remote repositoryga yuboradi;
  • local branchni origin/feature/login bilan bog‘laydi;
  • keyingi push va pull amallarini soddalashtiradi.

Branchni o‘chirish

Ish tugagan branch local yoki remote repositorydan o‘chirilishi mumkin.

Local branchni o‘chirish:

git branch -d feature/login

Remote branchni o‘chirish:

git push origin --delete feature/login

Branch o‘chirilganda commitlar boshqa branchga merge qilingan bo‘lsa, loyiha tarixi saqlanib qoladi.

Pull request

Branchlar GitHub va GitLab kabi platformalarda pull request orqali asosiy branchga qo‘shiladi.

Pull request jarayonida quyidagilar bo‘ladi:

  • branchdagi commitlar ko‘riladi;
  • o‘zgargan fayllar tekshiriladi;
  • code review qilinadi;
  • testlar ishga tushadi;
  • izohlar yoziladi;
  • merge qilish qarori qabul qilinadi.

Pull request branchdagi o‘zgarishlarni nazorat bilan birlashtirish imkonini beradi.

Branch protection

Branch protection — muhim branchlarni bevosita o‘zgartirishdan himoya qilish sozlamasi. Bu funksiya GitHub, GitLab va boshqa platformalarda mavjud.

Branch protection orqali quyidagilar talab qilinishi mumkin:

  • pull request orqali merge qilish;
  • code review tasdig‘i;
  • CI/CD testlaridan o‘tish;
  • force pushni bloklash;
  • branchni o‘chirishni cheklash;
  • admin ruxsatlarini boshqarish.

Masalan, main branchga to‘g‘ridan-to‘g‘ri push qilish bloklanishi mumkin.

Git Flow

Git Flow — branchlar bilan ishlashga asoslangan Git workflowlardan biri. Unda turli branch turlari aniq vazifalarga ajratiladi.

Git Flow’da quyidagi branchlar uchraydi:

  • main;
  • develop;
  • feature/*;
  • release/*;
  • hotfix/*.

Bu workflow release, feature va hotfix jarayonlarini ajratib boshqarishga asoslanadi.

Trunk-based development

Trunk-based development — dasturchilar asosiy branchga yaqin holda kichik va tez-tez o‘zgarishlar qo‘shadigan workflow. Bunda uzoq yashaydigan branchlar kamroq ishlatiladi.

Bu yondashuvda quyidagilar uchraydi:

  • qisqa yashaydigan feature branchlar;
  • tez-tez merge qilish;
  • avtomatik testlar;
  • feature flaglar;
  • CI/CD bilan bog‘liq jarayonlar.

Trunk-based development tezkor release va uzluksiz integratsiya jarayonlarida ishlatiladi.

Branch va CI/CD

Branchlar CI/CD jarayonlariga bevosita bog‘lanishi mumkin. Turli branchlarga turli pipeline qo‘llanadi.

Masalan:

  • main branchga push bo‘lsa, production deploy ishga tushadi;
  • develop branchga push bo‘lsa, staging deploy bajariladi;
  • pull request ochilsa, testlar ishga tushadi;
  • release branch yaratilsa, build tayyorlanadi.

CI/CD tizimlari branch nomi va hodisaga qarab turli vazifalarni bajarishi mumkin.

Branch va release

Release jarayonida branchlar versiya tayyorlash uchun ishlatiladi. Release branch orqali kod barqarorlashtiriladi va yakuniy versiyaga tayyorlanadi.

Release branch ichida quyidagilar bajarilishi mumkin:

  • bugfix;
  • version number yangilash;
  • changelog yozish;
  • testdan o‘tkazish;
  • build tayyorlash;
  • deployment konfiguratsiyasini tekshirish.

Release tugagach, branch asosiy branchga merge qilinadi va tag qo‘yilishi mumkin.

Branch va jamoaviy ish

Branch jamoa a’zolariga bitta repositoryda bir vaqtning o‘zida turli vazifalar ustida ishlash imkonini beradi.

Jamoaviy ishda branch quyidagi holatlarda ishlatiladi:

  • har bir dasturchi alohida feature ustida ishlaganda;
  • code review jarayoni tashkil qilinganda;
  • parallel bugfixlar bo‘lganda;
  • release va develop jarayonlari ajratilganda;
  • production kodi himoya qilinganda.

Branchlar kod o‘zgarishlarini bir-biridan ajratib, boshqariladigan holatda saqlaydi.

Dasturlashdagi o‘rni

Branch Git orqali kod boshqarish jarayonining asosiy qismlaridan biridir. U loyiha tarixini turli yo‘nalishlarga ajratadi va o‘zgarishlarni nazorat bilan birlashtirish imkonini beradi.

Branch quyidagi joylarda muhim rol o‘ynaydi:

Branch Git repositoryda parallel ishlash, kodni ajratish va o‘zgarishlarni tartibli boshqarish uchun ishlatiladi.

Bog‘liq tushunchalar

Git, GitHub, Repository, Commit, Pull request, Merge, Rebase, Conflict, Main branch, Remote branch, CI/CD, Code review