Bosh sahifa Wiki Main branch

Main branch

Main branch — repositoryda rivojlanishning asosiy integratsiya yo‘nalishi sifatida qabul qilingan branch. U ko‘pincha main deb nomlanadi, eski loyihalarda master yoki boshqa nom bo‘lishi mumkin. Gitning o‘zi qaysi branch “asosiy” ekanini semantik majburiyat bilan belgilamaydi; default branch hosting va jamoa konfiguratsiyasi orqali tanlanadi.

Vazifasi

Main branch jamoa birlashtirgan o‘zgarishlarning umumiy tarixini saqlaydi. Trunk-based jarayonda u doim deploy qilinadigan holatda turishi kutiladi. Feature branchlar qisqa yashab, test va reviewdan keyin mainga qo‘shiladi.

Git Flow kabi modelda main faqat release tarixini, develop esa kundalik integratsiyani saqlashi mumkin. Shu sababli “main har doim production” qoidasi universal emas; loyiha branching va release siyosati bilan aniqlanadi.

Default branch

Repository clone qilinganda remote HEAD qaysi branch default ekanini ko‘rsatadi. Pull request base, yangi issue havolalari va web interfeys ko‘pincha default branchni ishlatadi. Default branch nomini o‘zgartirish faqat lokal branch rename emas; CI trigger, deploy, badge, documentation va protection qoidalari ham yangilanadi.

Remote default branch o‘zgargach lokal clone origin/HEAD ma’lumotini yangilashi mumkin. Eski script master nomini qattiq yozgan bo‘lsa buziladi.

Himoya qoidalari

Branch protection to‘g‘ridan-to‘g‘ri push va force pushni cheklaydi. Pull request, ma’lum review soni, CODEOWNERS tasdig‘i, signed commit, status checks yoki up-to-date branch talab qilinishi mumkin. Admin bypass huquqi favqulodda holat uchun audit qilinadi.

Status check aynan merge qilinadigan commit yoki platforma yaratgan test merge commitida bajarilishi kerak. Feature branchdagi eski yashil test mainning yangi holati bilan moslikni isbotlamaydi.

Tarix uslubi

Merge commit branch kontekstini saqlaydi. Squash merge pull requestdagi ko‘p commitni main’da bitta commitga aylantiradi. Rebase merge commitlarni chiziqli joylashtiradi. Jamoa revert, bisect va release note ehtiyojiga qarab uslub tanlaydi.

Main tarixini force rewrite qilish boshqa clone, ochiq pull request va release taglarida katta divergence keltiradi. Maxfiy secretni tarixdan o‘chirish kabi zarur rewrite kelishilgan va hujjatlashtirilgan jarayon bilan bajariladi.

Release va deploy

Main’dagi har commit CI’dan o‘tishi mumkin, ammo production deploy alohida environment approval yoki release tagga bog‘lanishi mumkin. Feature flag tugallanmagan funksiyani kodda o‘chirilgan holda saqlaydi. Bu uzoq branch divergence’ni kamaytiradi, lekin eski flaglar tozalanadi.

Main buzilsa keyingi barcha branchlar ta’sirlanadi. Tez revert yoki forward fix, aniq owner va monitoring integratsiya branchining barqarorligini saqlaydi.

Branch nomini almashtirish

Default branch nomini o‘zgartirish faqat lokal branchni rename qilishdan iborat emas. Hosting platformasidagi default branch sozlamasi, branch protection qoidalari, CI triggerlari, deploy skriptlari, badge havolalari va hujjatlardagi URLlar yangilanadi. Ochiq pull requestlar ko‘pincha platforma tomonidan moslashtiriladi, biroq tashqi integratsiyalar alohida tekshiruv talab qiladi. Hamkorlar git fetchdan keyin yangi remote branchga upstream o‘rnatib, eskirgan remote-tracking reference’ni tozalaydi. Nom o‘zgarishi commit tarixini o‘zgartirmaydi; u faqat ayni commit zanjiriga ishora qiluvchi reference nomini almashtiradi.

Asosiy branch har doim production holatining aynan o‘zi bo‘lavermaydi. Ayrim loyihalarda release taglari yoki uzoq muddatli maintenance branchlar chiqarilgan versiyalarni ifodalaydi. Shu sababli “main yashil” talabi bilan “productionda qaysi commit ishlamoqda” kuzatuvi alohida yuritiladi.

Bog‘liq tushunchalar

Git, default branch, branch protection, trunk-based development, pull request, CI/CD, feature flag