Git submodule’lari

Git submodule’lari


ULASHISH

Git submodule’lari nima?

Git submodule’lari bitta Git repozitoriysini boshqasining ichiga ichki katalog sifatida kiritish imkonini beradi.

Bu alohida repozitoriylarda boshqariladigan kutubxonalar yoki bog‘liqliklarni qo‘shish uchun foydali, bunda ularning commit tarixi alohida saqlanadi.


Nega submodule’lardan foydalanish kerak?

Submodule’lar quyidagi hollarda foydali:

  • Boshqa loyihadagi koddan qayta foydalanmoqchi bo‘lganingizda
  • Kutubxona yoki bog‘liqlikni muayyan commit’da kuzatmoqchi bo‘lganingizda
  • Loyihalar tarixini alohida saqlamoqchi bo‘lganingizda

Submodule’ni qanday qo‘shish mumkin

Loyihangizga submodule qo‘shish uchun quyidagidan foydalaning:

Misol: Submodule qo‘shish

git submodule add https://github.com/example/library.git libs/library

Bu libs/library ichki katalogini yaratadi va .gitmodules faylini submodule ma’lumotlari bilan yangilaydi.


Submodule’lari bo‘lgan repozitoriyni qanday klonlash mumkin

Submodule’lari bo‘lgan repozitoriyni klonlaganingizda, ularning tarkibini alohida yuklab olishingiz kerak:

Misol: Submodule’larni ishga tushirish (init) va yangilash

git submodule init
git submodule update

Yoki klonlash vaqtida hammasini birdaniga bajaring:

Misol: Submodule’lar bilan klonlash

git clone --recurse-submodules https://github.com/user/repo.git


Submodule holatini qanday tekshirish mumkin

Submodule’laringizning joriy commit’i va holatini ko‘rish uchun quyidagidan foydalaning:

Misol: Submodule holati

git submodule status

Barcha submodule’larda buyruqlarni qanday ishga tushirish mumkin

Har bir submodule’da buyruq ishga tushirishingiz mumkin. Masalan, ularning holatini tekshirish uchun:

Misol: foreach

git submodule foreach git status

Submodule’larni qanday yangilash mumkin

Submodule’larni ularning masofaviy repozitoriysidagi eng so‘nggi commit’gacha yangilash uchun:

Misol: Barcha submodule’larni yangilash

git submodule update --remote

Submodule’ni qanday olib tashlash mumkin

Submodule’ni olib tashlash uchun:

  • .gitmodules faylidan tegishli bo‘limni o‘chiring
  • Submodule katalogini ishchi daraxtingizdan (working tree) olib tashlang
  • git rm --cached path/to/submodule buyrug‘ini ishga tushiring

.gitmodules haqida

.gitmodules fayli barcha submodule’lar va ularning yo‘llarini kuzatib boradi. Submodule’larni ko‘chirsangiz yoki olib tashlasangiz, bu faylni tahrirlang.

Misol: .gitmodules fayli

[submodule "libs/library"]
  path = libs/library
  url = https://github.com/example/library.git

Muammolarni bartaraf etish va eng yaxshi amaliyotlar

  • Agar klonlashdan keyin submodule’lar bo‘sh bo‘lsa, git submodule update --init --recursive buyrug‘ini ishga tushiring.
  • Agar submodule URL’ini o‘zgartirsangiz, .gitmodules va .git/config fayllarining ikkalasini ham yangilang.
  • Submodule’lar har doim eng so‘nggisiga emas, balki muayyan commit’ga ishora qiladi — yangi o‘zgarishlarni olmoqchi bo‘lsangiz, yangilashni unutmang.
  • Submodule’lardan qat’iy versiyada kuzatmoqchi bo‘lgan tashqi loyihalar uchun foydalaning. Oddiyroq ehtiyojlar uchun Git subtree yoki fayllarni nusxalash kabi muqobil yo‘llarni ko‘rib chiqing.

Eslatma: Submodule’lar kuchli vosita, lekin ularni boshqarish murakkab bo‘lishi mumkin.

Ulardan faqat boshqa loyihani muayyan commit’da kuzatish haqiqatan zarur bo‘lsagina foydalaning.




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!