Bosh sahifa Wiki Repository

Repository

Repository — loyiha fayllari, kodlari va ularning o‘zgarish tarixi saqlanadigan joy. Repository Git orqali boshqariladi va dasturchilarga kodni tartibli saqlash, versiyalarni kuzatish hamda jamoa bilan ishlash imkonini beradi.

Repository ichida dastur kodi, konfiguratsiya fayllari, dokumentatsiya, testlar, assetlar va Git tarixi bo‘lishi mumkin.

Vazifasi

Repository dasturiy loyiha kodini markazlashgan va nazorat qilinadigan holatda saqlash uchun ishlatiladi.

Repository quyidagi vazifalarni bajaradi:

  • loyiha fayllarini saqlash;
  • kod o‘zgarishlarini kuzatish;
  • commit tarixini yuritish;
  • branchlar bilan ishlash;
  • jamoaviy ishlashni tashkil qilish;
  • kodni remote serverda saqlash;
  • pull request va code review jarayonlarini yuritish;
  • release versiyalarni boshqarish;
  • dokumentatsiyani saqlash;
  • CI/CD jarayonlari bilan bog‘lanish.

Masalan, web sayt kodi alohida repositoryda saqlanadi va jamoa a’zolari shu repository orqali kod ustida ishlaydi.

Repository qanday ishlaydi?

Repository Git orqali fayllar holatini kuzatadi. Har bir muhim o‘zgarish commit sifatida saqlanadi. Commitlar repository tarixini hosil qiladi.

Oddiy jarayon:

  • loyiha repository sifatida yaratiladi;
  • fayllar qo‘shiladi yoki o‘zgartiriladi;
  • o‘zgarishlar staging area’ga qo‘shiladi;
  • commit yaratiladi;
  • commit repository tarixida saqlanadi;
  • kerak bo‘lsa remote repositoryga yuboriladi;
  • boshqa dasturchilar o‘zgarishlarni olib ishlaydi.

Repository loyiha kodining hozirgi holati va avvalgi holatlarini birgalikda saqlaydi.

Local repository

Local repository — dasturchining kompyuterida joylashgan repository. Local repository internetga ulanmasdan ham ishlashi mumkin.

Local repository’da quyidagilar bajariladi:

  • kod yozish;
  • fayllarni o‘zgartirish;
  • commit yaratish;
  • branch ochish;
  • log ko‘rish;
  • diff tekshirish;
  • merge qilish;
  • stash ishlatish.

Masalan, dasturchi kompyuterida loyiha papkasida kod yozib, o‘zgarishlarni local repositoryda commit qiladi.

Remote repository

Remote repositoryGitHub, GitLab, Bitbucket yoki boshqa Git serverda joylashgan repository. Remote repository jamoa bilan kod almashish va kodni internetda saqlash uchun ishlatiladi.

Remote repository’da quyidagilar bo‘lishi mumkin:

  • umumiy kod bazasi;
  • branchlar;
  • pull requestlar;
  • issue’lar;
  • release’lar;
  • CI/CD sozlamalari;
  • jamoa ruxsatlari;
  • repository sozlamalari.

Masalan, dasturchi local commitlarini git push orqali remote repositoryga yuboradi.

Public repository

Public repository — hamma ko‘ra oladigan ochiq repository. Bunday repositorylar open-source loyihalar, dokumentatsiya, portfolio va umumiy kutubxonalar uchun ishlatiladi.

Public repository’da odatda quyidagilar ochiq ko‘rinadi:

Public repository boshqa dasturchilar tomonidan ko‘rilishi, fork qilinishi yoki o‘rganilishi mumkin.

Private repository

Private repository — faqat ruxsat berilgan foydalanuvchilar ko‘ra oladigan yopiq repository. Kompaniya loyihalari, tijoriy mahsulotlar va shaxsiy kodlar ko‘pincha private repositoryda saqlanadi.

Private repository’da quyidagilar cheklangan bo‘ladi:

  • kodni ko‘rish;
  • commit tarixiga kirish;
  • branchlarni ko‘rish;
  • issue va pull requestlarni ochish;
  • repository sozlamalarini boshqarish;
  • secret va deploy kalitlariga kirish.

Private repository maxfiy yoki ichki loyiha kodlarini boshqarish uchun ishlatiladi.

Bare repository

Bare repository — ishchi fayllarsiz, faqat Git tarixi va metadata saqlanadigan repository turi. U odatda server tomonda remote repository sifatida ishlatiladi.

Bare repository ichida oddiy loyiha fayllari bevosita tahrirlash uchun turmaydi. Unda Git obyektlari, branchlar, commitlar va reference ma’lumotlari saqlanadi.

Bare repository quyidagi holatlarda uchraydi:

  • Git server yaratishda;
  • self-hosted Git tizimlarda;
  • remote repository sifatida;
  • markaziy kod ombori sifatida.

Monorepo

Monorepo — bir nechta loyiha, servis yoki paket bitta repository ichida saqlanadigan yondashuv.

Monorepo ichida quyidagilar bo‘lishi mumkin:

Masalan, bitta repository ichida frontend, backend, shared va docs papkalari bo‘lishi mumkin.

Polyrepo

Polyrepo — har bir loyiha yoki servis alohida repositoryda saqlanadigan yondashuv. Bu usulda frontend, backend, mobile yoki microservice’lar alohida repositorylarga ajratiladi.

Polyrepo quyidagi holatlarda uchraydi:

Masalan, web-frontend, api-backend va admin-panel alohida repositorylarda saqlanishi mumkin.

Repository tuzilmasi

Repository ichidagi fayl va papkalar loyiha turiga qarab farq qiladi. Lekin ko‘p repositorylarda umumiy tuzilmalar uchraydi.

Repository ichida quyidagilar bo‘lishi mumkin:

  • README.md;
  • source code papkalari;
  • test papkalari;
  • konfiguratsiya fayllari;
  • .gitignore;
  • dokumentatsiya;
  • assetlar;
  • Docker fayllar;
  • CI/CD konfiguratsiyalari;
  • license fayli.

Masalan, web loyiha repositorysida src, public, package.json, README.md va .gitignore bo‘lishi mumkin.

README

README — repository haqida asosiy ma’lumot beradigan fayl. GitHub va boshqa platformalarda README repository bosh sahifasida ko‘rinadi.

README ichida quyidagilar bo‘lishi mumkin:

  • loyiha nomi;
  • qisqa tavsif;
  • o‘rnatish tartibi;
  • ishga tushirish buyruqlari;
  • texnologiyalar;
  • konfiguratsiya;
  • foydalanish misollari;
  • API haqida ma’lumot;
  • litsenziya;
  • muallif yoki jamoa ma’lumoti.

README odatda Markdown formatida yoziladi.

.gitignore

.gitignoreGit kuzatmasligi kerak bo‘lgan fayl va papkalarni belgilaydigan fayl.

.gitignore ichida odatda quyidagilar yoziladi:

  • dependency papkalari;
  • build fayllar;
  • cache fayllar;
  • log fayllar;
  • environment fayllar;
  • local sozlamalar;
  • IDE fayllari;
  • maxfiy kalitlar.

Masalan, node_modules/, .env, dist/ yoki __pycache__/ kabi fayllar .gitignore ichida bo‘lishi mumkin.

Commit

Repository tarixidagi har bir saqlangan o‘zgarish commit deb ataladi. Commit repository ichidagi kodning ma’lum bir vaqtdagi holatini bildiradi.

Commit ichida quyidagilar bo‘ladi:

  • o‘zgargan fayllar;
  • commit xabari;
  • muallif;
  • vaqt;
  • commit ID;
  • oldingi commit bilan bog‘lanish.

Commitlar repository tarixini bosqichma-bosqich hosil qiladi.

Branch

Repository ichida bir nechta branch bo‘lishi mumkin. Branch alohida ish yo‘nalishini bildiradi va asosiy kodga ta’sir qilmasdan yangi o‘zgarishlar ustida ishlash imkonini beradi.

Branchlar quyidagi maqsadlarda ishlatiladi:

  • yangi feature yaratish;
  • bug fix qilish;
  • release tayyorlash;
  • hotfix qilish;
  • tajriba kod yozish;
  • jamoa a’zolarining alohida ishlashi.

Masalan, asosiy branch main, yangi funksiya branchi esa feature/payment bo‘lishi mumkin.

Main branch

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

Main branch quyidagi nomlarda uchrashi mumkin:

  • main;
  • master;
  • production;
  • develop.

Repositorydagi boshqa branchlar ko‘pincha main branch asosida yaratiladi va tayyor bo‘lgandan keyin unga merge qilinadi.

Clone

Clone — remote repositoryni local kompyuterga ko‘chirib olish jarayoni.

Misol:

git clone https://github.com/user/project.git

Clone qilinganda:

  • repository fayllari yuklanadi;
  • Git tarixi olinadi;
  • remote manzil ulanadi;
  • local repository yaratiladi;
  • branchlar haqidagi ma’lumot olinadi.

Clone yangi dasturchi loyihani o‘z kompyuterida ishga tushirishi uchun kerak bo‘ladi.

Push

Push — local repositorydagi commitlarni remote repositoryga yuborish jarayoni.

Misol:

git push origin main

Push orqali:

  • yangi commitlar remote repositoryga chiqadi;
  • branch yangilanadi;
  • jamoa a’zolari o‘zgarishlarni ko‘ra oladi;
  • CI/CD jarayoni ishga tushishi mumkin.

Push repositorydagi local va remote holatlarni sinxronlash uchun ishlatiladi.

Pull

Pull — remote repositorydagi o‘zgarishlarni local repositoryga olish jarayoni.

Misol:

git pull origin main

Pull orqali:

  • remote commitlar olinadi;
  • local branch yangilanadi;
  • boshqa dasturchilar o‘zgarishlari local loyihaga qo‘shiladi;
  • kerak bo‘lsa merge jarayoni bajariladi.

Jamoaviy ishlashda pull remote repositorydagi eng yangi holatni olish uchun ishlatiladi.

Fork

Fork — boshqa repositorydan o‘z hisobingizga nusxa olish jarayoni. Fork ko‘pincha open-source loyihalarda ishlatiladi.

Fork orqali:

  • loyiha nusxasi yaratiladi;
  • o‘zgarishlar o‘z repositoryda qilinadi;
  • original repositoryga pull request yuborilishi mumkin;
  • tajriba kodlar alohida yuritiladi;
  • mustaqil variant yaratiladi.

Masalan, GitHub’da boshqa dasturchi repositorysini fork qilib, unga o‘zgartirish kiritish mumkin.

Pull request

Pull request — bir branch yoki forkdagi o‘zgarishlarni boshqa branch yoki repositoryga qo‘shish uchun ochiladigan so‘rov.

Pull request ichida quyidagilar bo‘ladi:

  • o‘zgargan fayllar;
  • commitlar;
  • izohlar;
  • reviewerlar;
  • test natijalari;
  • merge holati;
  • muhokama.

Pull request repository ichida code review va o‘zgarishlarni nazorat qilish jarayonining muhim qismidir.

Issue

Repository platformalarida issue vazifa, xatolik yoki taklifni yuritish uchun ishlatiladi.

Issue quyidagi maqsadlarda ochilishi mumkin:

  • bug haqida xabar berish;
  • yangi feature taklif qilish;
  • texnik vazifa yozish;
  • savol berish;
  • dokumentatsiya muammosini ko‘rsatish;
  • refactoring vazifasini belgilash.

Issue repository atrofidagi ishlarni tartibga solishga yordam beradi.

Release

Release — repositorydagi kodning ma’lum bir tayyor versiyasi. Release odatda tag bilan bog‘lanadi.

Release ichida quyidagilar bo‘lishi mumkin:

Masalan, v1.0.0 repositorydagi birinchi barqaror versiyani bildirishi mumkin.

Tag

Tag — repository tarixidagi ma’lum commitga nom berish uchun ishlatiladi. Taglar ko‘pincha versiyalarni belgilashda ishlatiladi.

Tag misollari:

  • v1.0.0;
  • v1.2.1;
  • beta;
  • stable;
  • release-2026-07.

Taglar repository tarixidagi muhim nuqtalarni belgilaydi.

Repository va loyiha farqi

Repository va loyiha bir-biriga yaqin tushunchalar, lekin ular har doim bir xil emas.

  • Loyiha — dastur, mahsulot yoki tizimning umumiy nomi;
  • Repository — shu loyiha kodi va Git tarixi saqlanadigan joy;
  • bitta loyiha bitta repositoryda bo‘lishi mumkin;
  • bitta loyiha bir nechta repositorydan iborat bo‘lishi mumkin;
  • bitta repository ichida bir nechta loyiha ham saqlanishi mumkin.

Masalan, katta platformada frontend, backend va mobile ilovalar alohida repositorylarda bo‘lishi mumkin.

Repository va directory farqi

Directory oddiy papka hisoblanadi. Repository esa Git orqali boshqariladigan papka yoki masofaviy kod omboridir.

Farqlar:

  • Directory — oddiy fayl papkasi;
  • RepositoryGit tarixi mavjud loyiha ombori;
  • directory’da Git tarixi bo‘lmasligi mumkin;
  • repository ichida .git katalogi bo‘ladi;
  • repository commit, branch va remote bilan ishlaydi.

Masalan, har qanday repository papka ko‘rinishida bo‘lishi mumkin, lekin har qanday papka repository emas.

Repository platformalari

Repositorylarni saqlash va boshqarish uchun turli platformalar mavjud.

Mashhur repository platformalari:

Bu platformalar Git repositorylarni internetda saqlash, jamoaviy ishlash, pull request, issue va CI/CD imkoniyatlarini beradi.

Dasturlashdagi o‘rni

Repository dasturiy ta’minot ishlab chiqish jarayonining asosiy qismlaridan biridir. U kodni saqlash, tarixni yuritish, jamoaviy ishlash va deployment jarayonlarini boshqarishda ishlatiladi.

Repository quyidagi joylarda qo‘llanadi:

  • frontend loyihalar;
  • backend loyihalar;
  • mobile ilovalar;
  • DevOps konfiguratsiyalar;
  • dokumentatsiya;
  • open-source loyihalar;
  • kutubxonalar;
  • CI/CD pipeline;
  • Docker konfiguratsiyalari;
  • infrastructure as code.

Repository loyiha kodini tartibli, kuzatiladigan va jamoa bilan ishlashga tayyor holatda saqlash uchun ishlatiladi.

Bog‘liq tushunchalar

Git, GitHub, Commit, Branch, Pull request, Clone, Push, Pull, Fork, Issue, Release, CI/CD