Merge Request (MR): nima, qanday yaratish va ko'rib chiqish jarayoni

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

Merge Request (MR) — bir Git filialidan ikkinchisiga o'zgarishlarni birlashtirish so'rovi, GitLab va GitHubda kod ko'rib chiqishning markaziy elementi. GitLab Docs, 2024 ma'lumotlariga ko'ra, Merge Request (MR) GitHubdagi Pull Request (PR) dan faqat terminologiya bilan farqlanadi: GitLabda bu MR, GitHubda — PR, ammo mohiyati va jarayoni bir xil. Har bir MR o'zgarishlar tavsifi, commitlar ro'yxati, diff fayllari va jamoa bilan muhokamani o'z ichiga oladi.

Asosiy fikrlar

  • Merge Request (MR) — GitLab va GitHubda kod ko'rib chiqish va sifat nazoratini tashkil qilish uchun ishlatiladigan filiallarni birlashtirish so'rovi mexanizmi.
  • MR o'z ichiga oladi tavsif, commitlar, o'zgarishlar diffi, muhokama va tekshirish holati (WIP, Ready, Approved, Merged).
  • CI/CD Pipeline MR yaratilganda avtomatik ishga tushadi, birlashtirishdan oldin qurilish, testlar va linterlarni tekshiradi.
  • Taqrizchilarni tayinlash — majburiy qadam: mas'ul dasturchi kodni tekshiradi va to'g'ridan-to'g'ri diff fayllarida sharhlar qoldiradi.
  • Tasdiqlashdan so'ng MR jamoaning siyosatiga qarab Squash, Merge Commit yoki Fast-Forward orqali birlashtirilishi mumkin.

Merge Request (MR) nima?

Merge Request (MR) — bir Git filialidan ikkinchisiga o'zgarishlarni integratsiya qilish so'rovi, kod ko'rib chiqish va avtomatik tekshirish jarayonini boshlaydi. Konsol orqali to'g'ridan-to'g'ri birlashtirishdan farqli o'laroq, MR rasmiy tartibni yaratadi: dasturchi o'zgarishlarni tavsiflaydi, taqrizchilarni tayinlaydi, CI/CDni ishga tushiradi va o'zgarishlar qo'llanilishidan oldin fikr-mulohaza oladi. Bu GitLabning asosiy elementi, ammo GitHubdagi o'xshash mexanizm Pull Request (PR) deb ataladi.

GitLab Documentation, 2026 ma'lumotlariga ko'ra, GitLabda har yili 80 milliondan ortiq Merge Request yaratiladi. Har bir MR to'rtta asosiy komponentdan iborat: o'zgarishlar konteksti bilan tavsif (description), commitlar ro'yxati (commits), kod farqi (diff) va muhokama (discussion thread). Ushbu elementlardan biri bo'lmasa, MR to'liq emas deb hisoblanadi.

Merge Request (MR) uchta vazifani hal qiladi: himoyalangan filiallarda (main, develop) to'g'ridan-to'g'ri o'zgarishlarning oldini oladi, ko'rib chiqish orqali sifat nazoratini ta'minlaydi va kelajakdagi dasturchilar uchun muhokamalar tarixini saqlaydi. GitLabda MR holati interfeysda rang ko'rsatkichlari bilan aks etadi: kulrang — Draft, to'q sariq — kutish, yashil — Approved, binafsha — Merged va qizil — Closed.

Terminologiya: MR, PR va CR

Turli Git platformalarida Merge Request turlicha nomlanadi. GitLab “Merge Request” (MR), GitHub — “Pull Request” (PR) ishlatadi. O'xshashlik — Gerritdagi Change Request (CR). Uchalasi ham bir xil jarayonni bildiradi: kod ko'rib chiqish orqali o'zgarishlarni integratsiya qilish so'rovi. Termin tanlovi faqat loyihada ishlatiladigan platformaga bog'liq.

git
# O'zgarishlar bilan filial yaratish
git checkout -b feature/add-auth
git commit -m "Add OAuth2 authentication flow"
git push origin feature/add-auth

# MRni GitLab/GitHub UI yoki CLI orqali yaratish mumkin:
gh pr create --title "Add OAuth2 authentication flow" \
  --body "Implements OAuth2 with Google and Apple providers" \
  --reviewer "team-lead"

MR vs PR: GitLab va GitHub o'rtasidagi farq nima

Merge Request GitLabda va Pull Request GitHubda — bular funksional jihatdan bir xil mexanizmlar, faqat nomlari farqli. Farq tarix bilan bog'liq: GitLab dastlab GitHubga Self-Hosted muqobil sifatida joylashgan va birlashtirish jarayoni uchun “Merge Request” terminini tanlagan. Oldin ishga tushirilgan GitHub esa “Pull Request” — o'zgarishlarni asosiy filialga “torish” (pull) so'rovidan foydalangan.

GitHub Docs, 2024 ma'lumotlariga ko'ra, ikkala vosita ham bir xil funksiyalar to'plamini qo'llab-quvvatlaydi: Markdown bilan tavsif, taqrizchilarni tayinlash, aniq kod qatorlariga sharh berish, tekshirish holatlari va shartlar bajarilganda avtomatik birlashtirish. Farqlar interfeys va qo'shimcha imkoniyatlar bilan bog'liq.

ParametrGitLab (Merge Request)GitHub (Pull Request)
TerminMerge Request (MR)Pull Request (PR)
QoralamaDraft MRDraft PR
Code OwnersCode Owners + ApprovalsCODEOWNERS + Review
Birlashtirish usullariMerge Commit, Squash, Fast-ForwardMerge Commit, Squash, Rebase
CI integratsiyasiGitLab CI/CD o'rnatilganGitHub Actions

Merge Request qanday yaratiladi: bosqichma-bosqich ko'rsatma

Merge Request (MR) yaratish o'zgarishlar bilan filialni masofaviy omborga joylashtirish bilan boshlanadi. GitLab yoki GitHubga push qilgandan so'ng, interfeysda “Create Merge Request” yoki “Compare & Pull Request” tugmasi paydo bo'ladi. Dasturchi tavsifni to'ldiradi, maqsadli filialni (odatda develop yoki main) ko'rsatadi, taqrizchilarni tayinlaydi va teglar (labels) qo'shadi.

GitLab Documentation, 2025 ma'lumotlariga ko'ra, standart MR 72 belgigacha sarlavha, shablon (template) bilan tavsif va vazifaga (issue) havolani o'z ichiga oladi. Tavsif savollarga javob berishi kerak: nima qilindi, nima uchun, qanday test qilindi. GitLab Closes, Fixes, Resolves kalit so'zlari orqali birlashtirishda issuelarni avtomatik yopishni qo'llab-quvvatlaydi.

yaml
# .gitlab/merge_request_templates/default.md shablon namunasi
## What does this MR do?

[O'zgarishlarning qisqacha tavsifi: nima va nima uchun]

## How to test

1. Ishga tushirish ./gradlew test
2. Tekshirish LoginActivity test tokeni bilan
3. regressiya yo'qligini tekshirish AuthManager

## Related issues

Closes #142

MR ning hayot aylanishi: Draftdan Mergedgacha

Merge Request (MR) GitLabda beshta holatdan o'tadi. Birinchisi — Draft (qoralama), sarlavhada “Draft:” prefiksi bilan belgilanadi va birlashtirishni bloklaydi. Tayyor bo'lgach, dasturchi Draftni olib tashlaydi va MR Opened holatiga o'tadi — kod ko'rib chiqish boshlanadi va CI/CD pipeline ishga tushadi.

GitLab Docs, 2024 ma'lumotlariga ko'ra, Opened holatida taqrizchilar difni ko'rib chiqadilar, sharhlar qoldiradilar va Resolve Threads orqali o'zgarishlarni talab qiladilar. Barcha mavzular yopilganda va CI/CD muvaffaqiyatli o'tganda, mas'ul dasturchi Approve qo'yadi. Shundan so'ng MR Merge tugmasi bilan birlashtirilishi yoki avtomatik birlashtirishni (Auto-merge) kutishi mumkin.

GitLab uchta yakuniy holat variantini qo'llab-quvvatlaydi: Merged (muvaffaqiyatli birlashtirilgan), Closed (birlashtirilmasdan yopilgan, masalan, funksiyadan voz kechilganda) va Reopened (yopilgandan so'ng qayta ochilgan). Har bir holat audit uchun Activity Timeline MRda qayd etiladi.

Avtomatik holatlar va tetikleyiciler

GitLab hodisalar yuz berganda Merge Request holatini avtomatik yangilaydi: yangi commitlar push qilinganda Approvals qayta o'rnatiladi, muvaffaqiyatli CI pipelineda holat Pipeline passed bo'ladi, xatolikda — Pipeline failed (birlashtirish bloklanadi). Auto-mergeni sozlash mumkin: MR muvaffaqiyatli CI va barcha talab qilingan tasdiqlar olingandan so'ng avtomatik birlashadi.

  • Draft — qoralama, CI ishga tushadi, lekin birlashtirish bloklangan
  • Opened — ko'rib chiqishga tayyor, taqrizchilar tayinlangan, pipeline faol
  • Approved — kerakli miqdordagi tasdiqlar olingan
  • Merged — o'zgarishlar maqsadli filialga birlashtirilgan
  • Closed — birlashtirilmasdan yopilgan

Merge Requestda kod ko'rib chiqish qoidalari

Merge Request (MR)da kod ko'rib chiqish — tijorat loyihalarining aksariyatida majburiy bosqich. SmartBear, 2023 tadqiqotiga ko'ra, MR bilan kod ko'rib chiqish nuqsonlar sonini 30–60% kamaytiradi va yangi dasturchilarning moslashishini tezlashtiradi. Asosiy qoida — har bir MRni kamida bitta, yaxshisi ikkita, kod yozishda ishtirok etmagan dasturchi tekshiradi.

MR tekshiruvi beshta mezonni o'z ichiga oladi: mantiqiy to'g'rilik, kod uslubiga muvofiqlik, test bilan qoplanish, xavfsizlik va unumdorlik. GitLabda Required Approvals — birlashtirishdan oldin majburiy tasdiqlar sonini sozlash mumkin, masalan, main uchun 2, develop uchun 1 tasdiq.

MRda muhokama Threads — kodning aniq qatorlariga sharhlar shaklida olib boriladi. Har bir mavzu birlashtirishdan oldin resolved (yopilgan) bo'lishi kerak. Ko'rib chiqishni tezlashtirish uchun MR hajmini cheklash tavsiya etiladi: 200–400 qator o'zgarish. Google Research (2022) ma'lumotlariga ko'ra, 400 qatordan ortiq MR 30% kam samarali tekshiriladi.

Merge Requestda CI/CD pipeline

Merge Request (MR) yaratilganda CI/CD pipeline avtomatik ishga tushadi. GitLabda bu .gitlab-ci.yml fayli orqali, GitHubda — GitHub Actions workflow orqali amalga oshiriladi. Pipeline loyiha qurilishi (build), birlik testlarini (unit tests) ishga tushirish, linterlar (lint), statik tahlil (SAST) va kod qoplanishini tekshirishni o'z ichiga oladi.

GitLab Blog, 2024 ma'lumotlariga ko'ra, pipeline holati to'g'ridan-to'g'ri MRda ko'rsatiladi: yashil belgi (passed), qizil xoch (failed) yoki sariq doira (running). Pipeline muvaffaqiyatsiz bo'lsa, GitLab tuzatish kiritilgunga qadar Merge tugmasini bloklaydi. Sozlamalarda “Merge when pipeline succeeds” — muvaffaqiyatli pipelinedan so'ng avtomatik birlashtirishni yoqish mumkin.

yaml
# .gitlab-ci.yml — Android loyihasi uchun namuna
test:
  stage: test
  script:
    - ./gradlew ktlintCheck
    - ./gradlew testDebugUnitTest
  only:
    - merge_requests

build:
  stage: build
  script:
    - ./gradlew assembleDebug
  only:
    - merge_requests

Birlashtirish usullari: Squash, Merge Commit, Fast-Forward

GitLab va GitHub Merge Request uchun uchta birlashtirish usulini taklif qiladi. Tanlov jamoa siyosati va talab qilinadigan tarix tozaligiga bog'liq. Merge Commit — alohida birlashtirish commitini yaratadi, feature filialining butun tarixini saqlaydi. Squash — filialning barcha commitlarini maqsadli filialda bitta commitga birlashtiradi. Fast-Forward — commitlarni birlashtirish commitisiz chiziqli tarzda qo'llaydi.

GitLab Docs, 2025 ma'lumotlariga ko'ra, Squash yuqori commit zichligiga ega loyihalarda (bitta feature filialida 20+ commit) afzal ko'riladi. Fast-Forward Trunk-Based Development uchun majburiydir. Merge Commit Git Flowda filiallanish semantikasini saqlash uchun ishlatiladi.

  • Merge Commit — tarixni saqlaydi, birlashtirish commitini yaratadi, Git Flow uchun mos
  • Squash — barcha commitlarni bittaga birlashtiradi, toza tarix, oraliq commitlar yo'qoladi
  • Fast-Forward — birlashtirish commitisiz chiziqli tarix, TBDda majburiy

Eng yaxshi amaliyotlar: yaxshi MRni qanday yozish

Sifatli Merge Request (MR) ko'rib chiqish vaqtini qisqartiradi va xatolar sonini kamaytiradi. Birinchi qoida — bitta MR bitta vazifani hal qiladi. Agar o'zgarishlar bir nechta bog'liq bo'lmagan funksiyalarga ta'sir qilsa, ularni alohida MRlarga bo'lish kerak. Ikkinchisi — MR sarlavhasi ma'lumot beruvchi bo'lishi kerak: “Fix stuff” yoki “Update code” o'rniga “Add OAuth2 authentication with Google provider”.

Google Engineering Practices, 2024 ma'lumotlariga ko'ra, yaxshi MR kontekst tavsifini o'z ichiga oladi: nima uchun o'zgarishlar kerak, ular qanday test qilingan, qanday xavflar bor. MR hajmi 400 qator o'zgarishdan oshmasligi kerak. Agar hajm kattaroq bo'lsa — vazifa kichik vazifalarga bo'linishi kerak. Hujjatlar va testlar uchun istisnolar ruxsat etiladi, ammo tushuntirish bilan.

Merge Request (MR) yangi funksionallik uchun avtomatik testlarni o'z ichiga olishi kerak. GitLabda Coverage Check siyosatini sozlash mumkin — kod qoplanishi chegaradan (masalan, 80%) pastga tushsa, MR avtomatik bloklanadi. Bu yangi funksionallik loyihaning umumiy sifatini pasaytirmasligini kafolatlaydi.

  • Bitta MR — bitta vazifa: katta o'zgarishlarni bir nechta kichik MRlarga bo'ling
  • Shablon bilan tavsif: bir xillik uchun .gitlab/merge_request_templates dan foydalaning
  • Hajm 400 qatorgacha: katta MRlar sekinroq va ko'proq xatolar bilan tekshiriladi
  • Testlar majburiy: yangi funksiyalar birlik testlari bilan qoplanishi kerak

MR tavsif shablonlari

GitLab Merge Request shablonlarini .gitlab/merge_request_templates/ fayllari orqali qo'llab-quvvatlaydi. Shablon bo'limlarni o'z ichiga oladi: nima qilindi, qanday test qilish, bog'liq vazifalar va tekshirish ro'yxati. Shablonlardan foydalanish MR yaratishni tezlashtiradi va dasturchilarning muhim ma'lumotlarni ko'rsatishni unutmasligini kafolatlaydi. MR tavsifida birlashtirishda vazifalarni avtomatik yopish uchun bog'liq issue (Closes #N) majburiy ko'rsatiladi.

Tez-tez beriladigan savollar

Merge Request (MR) oddiy so'zlar bilan nima?

Merge Request (MR) — dasturchining o'z o'zgarishlarini loyihaning asosiy filialiga birlashtirish so'rovidir. Jamoaning boshqa a'zolari kodni tekshiradi, sharhlar qoldiradi va faqat tasdiqlashdan so'ng o'zgarishlar loyihaga kiritiladi. Bu GitHubdagi Pull Requestning analogidir.

Merge Request Pull Requestdan qanday farq qiladi?

Merge Request — GitLab termini, Pull Request — GitHub termini. Funksional jihatdan mexanizmlar bir xil: birlashtirish so'rovi, kod ko'rib chiqish, kod qatorlariga sharhlar, CI/CD tekshiruvlari. Farq faqat tugma nomi va ba'zi interfeys elementlarida.

GitLabda Merge Request qanday yaratiladi?

Push o'zgarishlardan so'ng masofaviy omborga, Merge Requests → Create Merge Request yorlig'ini oching. Manba filialini (source), maqsadli filialni (target) tanlang, tavsifni to'ldiring (shablondan foydalanishingiz mumkin), taqrizchini tayinlang va Create tugmasini bosing. GitLab avtomatik ravishda o'zgarishlarning diffini ko'rsatadi.

MRga nechta taqrizchi tayinlanishi kerak?

Optimal bitta MR uchun 1–2 taqrizchi. Google Research ma'lumotlariga ko'ra, ko'proq taqrizchilar tekshirish sifatini oshirmaydi, lekin kutish vaqtini uzaytiradi. Main filiali uchun ko'pincha majburiy 2 tasdiq, develop uchun 1 tasdiq sozlanadi.

Ideal Merge Request hajmi qanday bo'lishi kerak?

Ideal MR hajmi — 200–400 qator o'zgarish yoki 1–3 commit. SmartBear va Google ma'lumotlariga ko'ra, 400 qatordan katta MR 30% kam samarali tekshiriladi. Katta o'zgarishlarni bir nechta ketma-ket MRlarga bo'ling.

Xulosa

  • Merge Request (MR) — majburiy kod ko'rib chiqish va CI/CD tekshiruvi bilan o'zgarishlarni birlashtirish so'rovi mexanizmi
  • GitLab Merge Request terminidan foydalanadi, GitHub — Pull Request, ammo funksionallik bir xil
  • MR hayot aylanishi: Draft → Opened → Approved → Merged (yoki Closed)
  • CI/CD pipeline MRda avtomatik ishga tushadi va xatoliklarda birlashtirishni bloklaydi
  • Birlashtirish usullari: Merge Commit, Squash va Fast-Forward — jamoa siyosatiga qarab tanlanadi
  • Optimal hajm MR — 400 qatorgacha, bitta MR bitta vazifani hal qiladi
  • Kod ko'rib chiqish MR bilan nuqsonlar sonini 30–60% kamaytiradi (SmartBear, 2023)

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