Branch — Git 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:
mainbranch oxirgi barqaror commitga ishora qiladi;feature/loginbranch login funksiyasi commitlariga ega bo‘ladi;- feature tugagach, bu commitlar
mainbranchga merge qilinadi.
Branchlar commit tarixini turli yo‘nalishlarga ajratadi.
HEAD
HEAD — Git’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 commit — merge 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
Conflict — Git 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/loginbranchni remote repositoryga yuboradi;- local branchni
origin/feature/loginbilan 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:
mainbranchga push bo‘lsa, production deploy ishga tushadi;developbranchga 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:
- yangi feature ishlab chiqish;
- bugfix;
- hotfix;
- release;
- pull request;
- code review;
- CI/CD;
- open-source hissa qo‘shish;
- jamoaviy dasturlash;
- production kodni himoya qilish.
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