Git-da Repository: nima, qanday turlari bor va ular qanday ishlaydi

Muallif: IT Sectr Nashr etilgan: 2026-05-09 O'qish vaqti: 8 daq

Git-repozitoriy — bu loyihaning manba kodi ombori bo'lib, unda Git ishlanma davomida fayllardagi har bir o'zgarishni kuzatib boradi. Repozitoriy commitlar, shoxlar va teglarning to'liq tarixini o'z ichiga oladi, bu dasturchilarga kod ustida birgalikda ishlash imkonini beradi. Git, 2024 ma'lumotlariga ko'ra, repozitoriy har qanday versiyani nazorat qilish tizimining asosidir va dunyo bo'ylab millionlab loyihalarda qo'llaniladi.

Asosiy fikrlar

  • Git repozitoriyi — bu butun o'zgarishlar tarixi saqlanadigan .git xizmat papkasi bo'lgan loyiha direktoriyasidir.
  • Mahalliy repozitoriy dasturchining kompyuterida joylashgan va internetga ulanmasdan kod bilan ishlash imkonini beradi.
  • Masofaviy repozitoriy GitHub, GitLab yoki Bitbucket serverida joylashtiriladi va ishtirokchilar o'rtasida sinxronizatsiya uchun xizmat qiladi.
  • Git ma'lumotlarni fayllarning suratlari sifatida saqlaydi, o'zgarishlar ro'yxati sifatida emas, bu shoxlash va birlashtirish operatsiyalarini tezlashtiradi.
  • Versiyani nazorat qilish tizimi bir loyiha ustida bir vaqtning o'zida ishlash muammosini hal qiladi, kodni birlashtirishda nizolarning oldini oladi.

Git-da repozitoriy nima

Git repozitoriyi — bu versiyani nazorat qilish tizimi loyiha fayllarining o'zgarish tarixini tavsiflovchi meta-ma'lumotlar va obyektlarni saqlaydigan ma'lumotlar tuzilmasidir. Dasturchi git init buyrug'i bilan repozitoriyni ishga tushirganda, Git loyihaning ildizida yashirin .git papkasini yaratadi.

Bu papka ichida tizimning ishlashi uchun zarur bo'lgan barcha obyektlar, havolalar va konfiguratsiya fayllari joylashgan. Repozitoriy muayyan joylashuvga bog'liq emas — dasturchi uni mahalliy ravishda yaratib, keyin masofaviy serverga ulashi mumkin.

Git taqsimlangan repozitoriy modelidan foydalanadi: loyihaning har bir ishtirokchisi o'z kompyuterida to'liq tarix nusxasiga ega. Bu shuni anglatadiki, operatsiyalarning aksariyati — commit, tarixni ko'rish, shoxlar yaratish — serverga murojaat qilmasdan mahalliy ravishda bajariladi.

Git hujjatlariga ko'ra, taqsimlangan arxitektura tizimni nosozliklarga chidamli qiladi: agar server ishdan chiqsa, har qanday mahalliy repozitoriy loyihaning to'liq tarixini tiklash uchun manba bo'lishi mumkin.

Mahalliy va masofaviy repozitoriy

Mahalliy repozitoriy — bu dasturchining kompyuteridagi loyiha nusxasidir. U barcha commitlar, shoxlar va teglar tarixini o'z ichiga oladi va commit, branch, merge va rebase operatsiyalarini tarmoqqa ulanmasdan bajarish imkonini beradi.

Masofaviy repozitoriy serverda joylashtirilgan va jamoa a'zolari uchun sinxronizatsiya nuqtasi bo'lib xizmat qiladi. Dasturchilar o'z o'zgarishlarini git push buyrug'i bilan yuboradi va boshqalarning o'zgarishlarini git pull buyrug'i bilan oladi.

Mahalliy va masofaviy repozitoriy o'rtasidagi bog'lanish remote origin — Git konfiguratsiyasida saqlanadigan server URL-i orqali o'rnatiladi. Bitta mahalliy repozitoriy bir nechta masofaviy repozitoriylarga ulanishi mumkin, bu fork'lar bilan ishlashda foydalidir.

Bunday modelning asosiy afzalligi — dasturchi oflayn rejimda kod ustida ishlashi va o'zgarishlarni faqat natijani yuborishga tayyor bo'lganda sinxronlashtirishi mumkin.

Mahalliy va masofaviy repozitoriy o'rtasidagi farqlar

XususiyatMahalliyMasofaviy
JoylashuvDasturchining kompyuteridaServerda (GitHub, GitLab)
Tarmoqsiz kirishBarcha operatsiyalarga to'liq kirishUlanishsiz mavjud emas
SinxronizatsiyaMasofaviyga push/pullMahalliydan push qabul qiladi
Zaxira nusxaMa'lumot yo'qotilishidan himoyalanmaganServerda zaxira nusxalar bilan saqlanadi

Git repozitoriyda ma'lumotlarni qanday saqlaydi

Gitning saqlash modeli boshqa versiyani nazorat qilish tizimlaridan tubdan farq qiladi. Versiyalar o'rtasidagi o'zgarishlar ro'yxatini (deltalarni) saqlash o'rniga, Git har bir commit vaqtida loyihaning barcha fayllarining to'liq suratlarini saqlaydi.

Repozitoriydagi har bir obyekt noyob SHA-1 xeshi bilan identifikatsiya qilinadi. Agar fayl mazmuni commitlar o'rtasida o'zgarmagan bo'lsa, Git yangi obyekt yaratmaydi, balki mavjudini qayta ishlatadi — bu joyni tejaydi.

Git to'rt turdagi obyektdan foydalanadi: blob (fayl mazmuni), tree (katalog tuzilishi), commit (meta-ma'lumotlar bilan surat) va tag (commitga nomlangan havola). Barcha obyektlar .git/objects papkasida saqlanadi.

Git Internals ma'lumotlariga ko'ra, Gitning obyekt modeli ma'lumotlarning yaxlitligini ta'minlaydi: fayl mazmunining har qanday o'zgarishi yangi xeshga olib keladi, bu esa tarixni yashirin o'zgartirishni imkonsiz qiladi.

.git papkasining tuzilishi

.git papkasi — repozitoriyning yuragidir. Usiz Git o'zgarishlarni kuzata olmaydi, oddiy katalog esa faqat fayllar to'plami bo'lib qoladi. Ushbu papkaning tuzilishini tushunish repozitoriy bilan bog'liq muammolarni tashxislashga yordam beradi.

  • objects/ — repozitoriyning barcha obyektlari: blobs, trees, commits, tags. Siqilgan shaklda saqlanadi.
  • refs/ — commitlarga havolalar: heads (shoxlar), tags (teglar), remotes (masofaviy shoxlar).
  • HEAD — joriy faol shox yoki commitni ko'rsatadigan fayl.
  • config — repozitoriy sozlamalari: masofaviy URL, foydalanuvchi nomi, elektron pochta va boshqa parametrlar.
  • index — staging area (indeks), bu yerda Git commitga tayyorlangan fayllar haqida ma'lumot saqlaydi.
  • logs/ — havola yangilanish jurnallari (reflog), HEAD va shoxlarning harakat tarixini saqlaydi.

HEAD fayli alohida e'tiborga loyiqdir. Oddiy holatda u shoxga ramziy havolani o'z ichiga oladi, masalan ref: refs/heads/main. Detached HEAD holatida u to'g'ridan-to'g'ri commitga ishora qiladi — bu yangi commitlar hech qanday shoxga bog'lanmaganligini anglatadi.

Repozitoriy bilan asosiy operatsiyalar

Git repozitoriyi bilan ishlash dasturchi har kuni bajaradigan asosiy operatsiyalar to'plamini o'z ichiga oladi. Har bir operatsiya repozitoriy holatini o'zgartiradi, yangi obyektlar qo'shadi yoki havolalarni siljitadi.

  • git init — joriy katalogda yangi bo'sh repozitoriy yaratadi. Git boshlang'ich tuzilma bilan .git papkasini yaratadi.
  • git clone — mavjud masofaviy repozitoriyni barcha commit tarixi bilan birga mahalliy mashinaga nusxalaydi.
  • git add — fayl o'zgarishlarini staging area-ga (indeks) qo'shadi, ularni commitga tayyorlaydi.
  • git commit — indeksdagi ma'lumotlar asosida loyihaning suratini yaratadi va uni yangi commit obyekti sifatida saqlaydi.
  • git push — yangi commitlarni mahalliy repozitoriydan masofaviyga yuboradi, serverdagi shoxlarni yangilaydi.
  • git pull — masofaviy repozitoriydan yangi commitlarni oladi va ularni joriy mahalliy shox bilan birlashtiradi.

Push va pull operatsiyalari — masofaviy serverga ulanishni talab qiladigan yagona operatsiyalardir. Boshqa barcha operatsiyalar to'liq mahalliy ravishda bajariladi, bu katta tarix hajmida ham yuqori ish tezligini ta'minlaydi.

Repozitoriyda faylning hayot aylanishi

Repozitoriydagi har bir fayl to'rt holatdan o'tadi: untracked (kuzatilmaydi), modified (o'zgartirilgan), staged (tayyorlangan) va committed (tasdiqlangan). Git faqat git add orqali aniq qo'shilgan yoki allaqachon commit tarixida bo'lgan fayllarni kuzatadi.

Ushbu modelni tushunish Git bilan samarali ishlashning kalitidir. Dasturchi commitga faqat o'zgartirilgan fayllarning bir qismini tanlab tayyorlashi mumkin, aniq tavsif bilan mantiqiy to'liq commitlar yaratadi.

Masofaviy repozitoriylar odatda veb-interfeys, kirishni boshqarish tizimi va birgalikda ishlash uchun qo'shimcha vositalarni taqdim etadigan ixtisoslashtirilgan platformalarda joylashtiriladi.

  • GitHub — 100 milliondan ortiq repozitoriyga ega eng yirik platforma. Actions, Pull Requests, Issues va Wiki taqdim etadi. Ommaviy loyihalar uchun bepul.
  • GitLab — integratsiyalangan CI/CD, Container Registry va o'rnatilgan DevOps pipeline bilan platforma. SaaS va self-hosted versiyasida mavjud.
  • Bitbucket — Atlassian kompaniyasining Jira va Trello integratsiyasi bilan yechimi. Moslashuvchan kirish sozlamalari tufayli korporativ muhitda mashhur.

Platforma tanlovi jamoa hajmiga, maxfiylik talablariga va zarur integratsiyalarga bog'liq. Mobil ishlanma uchun keng jamiyat qo'llab-quvvatlashi va iOS va Android uchun CI/CD vositalari bilan integratsiyasi tufayli ko'pincha GitHub tanlanadi.

Repozitoriy bilan ishlash uchun buyruq namunalari

Amaliy stsenariyni ko'rib chiqamiz: dasturchi mavjud repozitoriyni klonlaydi, yangi shox yaratadi, o'zgarishlar kiritadi va ularni serverga yuboradi. Har bir buyruq repozitoriyning turli komponentlari bilan ishlashni namoyish etadi.

bash
# Masofaviy repozitoriyning klonlanishi
git clone https://github.com/user/mobile-app.git

# Loyiha katalogiga o'tish
cd mobile-app

# Yangi feature shoxini yaratish va unga o'tish
git checkout -b feature/auth

# O'zgartirilgan fayllar holatini tekshirish
git status

# Barcha o'zgarishlarni staging area-ga qo'shish
git add .

# Tavsif bilan commit yaratish
git commit -m "Add authentication module"

# O'zgarishlarni masofaviy repozitoriyga yuborish
git push origin feature/auth

git status buyrug'i — kundalik ishda eng foydalilaridan biridir. Qaysi fayllar o'zgartirilganini, qaysilari commitga tayyorligini va qaysilari umuman Git tomonidan kuzatilmasligini ko'rsatadi.

Commitlar tarixini ko'rish

Repozitoriy tarixini tahlil qilish uchun turli formatlash bayroqlari bilan git log buyrug'i ishlatiladi. U commitlarning xronologiyasini, ularning mualliflarini, sanalarini va SHA-1 identifikatorlarini ko'rsatadi.

bash
# Shoxlar grafigining vizualizatsiyasi bilan tarixni ko'rish
git log --oneline --graph --all

# Muayyan commitdagi o'zgarishlarni ko'rish
git show a1b2c3d

# Joriy holatni oxirgi commit bilan solishtirish
git diff HEAD

# Muayyan fayl tarixini ko'rish
git log --follow src/MainActivity.kt

--graph bayrog'i shoxlanishlarning ASCII-grafikini ko'rsatadi, bu bir nechta shoxlarda faol ishlaydigan repozitoriylarda ayniqsa foydalidir. Tez-tez nashr qilinadigan mobil loyihalar uchun vizual grafik ishlanma tuzilishini tez baholashga yordam beradi.

Tez-tez beriladigan savollar

Repozitoriy loyihadan nimasi bilan farq qiladi?

Repozitoriy — bu o'zgarishlar tarixiga ega kodning texnik omboridir. Loyiha — kengroq tushuncha bo'lib, repozitoriy, vazifalarni boshqarish tizimi, hujjatlar va ishlanma jarayonlarini o'z ichiga oladi. Bitta loyihada bir nechta repozitoriy bo'lishi mumkin.

GitHub-da repozitoriy qanday yaratiladi?

GitHub veb-interfeysi orqali New tugmasini bosib yangi repozitoriy yarating. Nom, tavsif va kirish darajasini belgilang. Keyin repozitoriyni mahalliy mashinaga klonlang yoki mavjud mahalliy repozitoriy bilan git remote add origin orqali bog'lang.

O'chirilgan repozitoriy qayta tiklanadimi?

Agar masofaviy repozitoriy serverdan o'chirilgan bo'lsa, lekin kamida bitta dasturchining mahalliy nusxasi bo'lsa, repozitoriy qayta tiklanishi mumkin. Yangi masofaviy repozitoriy yaratish va barcha tarix bilan mahalliy nusxadan git push --force bajarish kifoya.

Repozitoriyning fork-i nima?

Fork — bu boshqa birovning repozitoriyining sizning hisobingizdagi nusxasidir. Siz to'liq tarix nusxasini olasiz va asl nusxaga ta'sir qilmasdan istalgan o'zgarishlarni kiritishingiz mumkin. Fork'lar Pull Request orqali ochiq manbali loyihalarda qatnashish uchun ishlatiladi.

Repozitoriy hajmini qanday kamaytirish mumkin?

Obyektlarni siqish va erishib bo'lmaydigan ma'lumotlarni o'chirish uchun git gc dan foydalaning. git filter-branch yoki git filter-repo orqali katta fayllarni tarixdan o'chiring. Ikkilik fayllari bo'lgan loyihalar uchun Git LFS (Large File Storage) ni ko'rib chiqing.

Xulosa

  • Git repozitoriyi — bu har bir commit ma'lum bir vaqtda loyihaning barcha fayllarining surati bo'lgan, to'liq o'zgarishlar tarixiga ega kod omboridir.
  • Mahalliy repozitoriy dasturchining kompyuterida saqlanadi va tarmoqqa ulanmasdan Git operatsiyalarining to'liq to'plamini qo'llab-quvvatlaydi.
  • Masofaviy repozitoriy push va pull orqali jamoaning ishini sinxronlashtiradi, barcha ishtirokchilar uchun yagona haqiqat manbasini ta'minlaydi.
  • .git papkasi barcha xizmat ma'lumotlarini o'z ichiga oladi: obyektlar, shox havolalari, konfiguratsiya va reflog operatsiyalar jurnali.
  • GitHub, GitLab va Bitbucket — qo'shimcha CI/CD vositalari bilan masofaviy repozitoriylarni saqlash uchun asosiy platformalar.
  • Git obyekt modeli har bir obyektni identifikatsiya qilish uchun SHA-1 xeshlaridan foydalanadi, bu repozitoriy ma'lumotlarining yaxlitligini kafolatlaydi.
  • Tavsiya: har kuni kamida bir marta commit qiling va har bir tugallangan ish bosqichidan so'ng masofaviy repozitoriy bilan sinxronlashing.

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