Bosh sahifa Wiki Clone

Clone

Clone — Git repositoryning tarix, branch reference va ishchi nusxasini boshqa joyda yaratish amali. git clone odatda remote repositorydan obyektlarni oladi, origin nomli remote qo‘shadi, remote default branchini checkout qiladi va unga bog‘langan lokal branch yaratadi. Clone oddiy katalog nusxasidan farqli ravishda Git metadata hamda commit tarixini saqlaydi.

Asosiy jarayon

git clone https://example.com/team/project.git

Git yangi katalog yaratadi, .git repository metadata’sini joylaydi, serverdan reference va obyektlarni fetch qiladi, so‘ng default branch snapshotini working treega chiqaradi. Remote-tracking branchlar origin/main kabi nom bilan ko‘rinadi.

Clone repositoryning serverdagi issue, pull request, Actions logi yoki access control ma’lumotini lokalga ko‘chirmaydi. U asosan Git obyektlari va reference’larni oladi. Hostingga xos metadata alohida API yoki eksport orqali boshqariladi.

Transport va autentifikatsiya

HTTPS clone credential manager, personal token yoki boshqa provider autentifikatsiyasidan foydalanishi mumkin. SSH clone public key orqali serverga ulanadi. URL formatlari farq qiladi, lekin olingan Git obyektlari bir xil bo‘lishi mumkin.

Private repository uchun foydalanuvchida read huquqi bo‘lishi kerak. Tokenni clone URL ichiga yozish shell history va process logida oshkor qilishi mumkin. Credential manager yoki SSH agent maxfiy qiymatni xavfsizroq boshqaradi.

Shallow clone

--depth 1 faqat yaqin tarix bilan shallow repository yaratadi. Download va storage kamayadi, CI uchun tez bo‘lishi mumkin. Biroq eski commitga murojaat, to‘liq blame, ayrim merge-base va version hisoblari ishlamasligi mumkin. Keyin git fetch --unshallow bilan to‘liq tarix olinishi mumkin.

Partial clone --filter orqali katta bloblarni kerak bo‘lganda olishga imkon beradi. Sparse checkout esa working treega faqat tanlangan pathlarni chiqaradi. Partial clone obyekt downloadini, sparse checkout diskdagi checkout ko‘rinishini boshqaradi; ular boshqa tushunchalar.

Branch tanlash

--branch ma’lum branch yoki tagni checkout qiladi. --single-branch faqat tegishli tarix va reference doirasini cheklaydi. Bare clone working tree yaratmaydi va server yoki backup kabi Git obyekt ombori uchun ishlatiladi. Mirror clone barcha reference’larni aynan aks ettirishga mo‘ljallangan va push mirror bilan ehtiyot ishlatiladi.

Submodule va LFS

Oddiy clone submodule katalogining mazmunini avtomatik to‘liq olmasligi mumkin. --recurse-submodules yoki keyingi submodule update kerak. Git LFS fayllari repositoryda pointer sifatida turadi; LFS client haqiqiy katta obyektlarni alohida storage’dan yuklaydi.

Clone tugagach build uchun dependency va secretlar avtomatik mavjud bo‘lmaydi. README, lockfile va environment setup shu bosqichni tushuntiradi.

Obyektlar va disk hajmi

Clone ishchi fayllarni oddiy nusxalash bilan cheklanmaydi: commitlar, tree obyektlari, bloblar, taglar va reference’lar lokal obyektlar bazasiga olinadi. Git serveri uzatishni packfile ko‘rinishida siqib, bir-biriga o‘xshash obyektlar orasidagi farqlarni delta sifatida jo‘natishi mumkin. Juda katta tarix uchun partial clone bloblarni talab paydo bo‘lguncha serverdan olmaslik imkonini beradi; sparse checkout esa working treeda faqat tanlangan kataloglarni chiqaradi. Bu ikki mexanizm boshqa qatlamlarda ishlaydi va birga qo‘llanishi mumkin. Lokal nusxa mustaqil tarixga ega bo‘lsa-da, yangi remote o‘zgarishlari keyinchalik fetch orqali olinadi.

Clone tugagach, git remote -v manba manzillarini, git branch -vv esa lokal branchning upstream bog‘lanishini ko‘rsatadi. Bu tekshiruv ayniqsa bir xil nomli bir nechta server bilan ishlaganda push noto‘g‘ri repositoryga ketishining oldini oladi.

Bog‘liq tushunchalar

Git, repository, remote, fetch, checkout, shallow clone, sparse checkout