Bosh sahifa Wiki Pull

Pull

Pull — remote repositorydagi o‘zgarishlarni olish va ularni joriy lokal branchga integratsiya qilish uchun ishlatiladigan Git amali. git pull odatda avval fetch, keyin merge yoki rebase bajaradi. U “serverdagi faylni ustidan yozish” emas; commit tarixi va branchlar orasidagi bog‘lanishni yangilaydi.

Fetch va integratsiya

git pull origin main

Birinchi bosqich remote commit va reference’larni olib, origin/main remote-tracking branchini yangilaydi. Ikkinchi bosqich shu tarixni joriy branchga qo‘shadi. Joriy branch o‘zgarmagan bo‘lsa fast-forward, ikkala tomonda commit bo‘lsa merge commit yoki rebase kerak bo‘lishi mumkin.

git fetch alohida bajarilsa, dasturchi git log, git diff orqali kelgan o‘zgarishni ko‘rib, integratsiya usulini keyin tanlaydi. Pull bu ikki amalni bitta buyruqda birlashtiradi.

Merge va rebase rejimi

git pull --no-rebase fetchdan keyin merge qiladi. git pull --rebase lokal commitlarni yangilangan upstream ustida qayta yaratadi va chiziqli tarix hosil qiladi. Rebase qilingan commitlarning IDsi o‘zgaradi.

--ff-only faqat fast-forward mumkin bo‘lsa pullni bajaradi, divergent tarixda rad etadi. Bu kutilmagan merge commit yaratishni oldini oladi. Default xatti-harakat Git configuration bilan belgilanadi; jamoa uni aniq tanlaydi.

Upstream

Lokal branch upstream remote branchga bog‘langan bo‘lsa, oddiy git pull qayerdan olishni biladi. git branch -vv upstream holatini ko‘rsatadi. Branch nomi bir xil bo‘lishi shart emas; konfiguratsiya boshqa remote reference’ni ko‘rsatishi mumkin.

Bir repositoryda origin va upstream kabi bir nechta remote mavjud bo‘lsa, noto‘g‘ri manbadan pull qilish kutilmagan tarixni integratsiya qiladi. Buyruq oldidan joriy branch va remote tekshiriladi.

Working tree holati

Commit qilinmagan lokal o‘zgarish kelayotgan patch bilan to‘qnashsa pull to‘xtashi mumkin. O‘zgarish commit qilinadi yoki stashga vaqtincha olinadi. Auto-stash rebase jarayonida yordam berishi mumkin, lekin stashni qayta qo‘llashda conflict bo‘lishi ehtimoli qoladi.

Merge conflict hal qilingach fayllar stage qilinadi va integratsiya davom ettiriladi. Rebase’da har commit navbat bilan qo‘llanadi, shu sababli bir mantiqiy conflict bir necha commitda qayta chiqishi mumkin.

Xavfsizlik va tekshiruv

Pull remote kodni working treega olib keladi. Build script, hookga o‘xshash loyiha vositasi yoki dependency o‘zgargan bo‘lishi mumkin; ishonchsiz branch kodi avtomatik yuqori huquqda bajarilmaydi. Pull natijasidan keyin test va diff tekshiriladi.

Remote’da force push bo‘lsa, fetch remote-tracking branchni boshqa tarixga ko‘chirishi mumkin. Lokal commitlar darhol yo‘qolmaydi; reflog orqali oldingi reference topilishi mumkin, ammo shared branch force update jarayoni jamoa bilan muvofiqlashtiriladi.

Avtomatlashtirishdagi aniqlik

Interaktiv ishlashda git pull qulay qisqartma, ammo skript va CI jarayonida fetch hamda integratsiyani alohida bajarish aniqroq nazorat beradi. Skript avval kutilgan remote commitni olib, keyin fast-forward mumkinligini tekshirishi yoki aynan ko‘rsatilgan commitni build qilishi mumkin. Pullning standart merge yoki rebase xatti-harakati Git konfiguratsiyasiga bog‘liq bo‘lishi sababli, jamoa pull.rebase va pull.ff qiymatlarini ochiq belgilaydi. Remote branch tarixini ishonchli deb qabul qilishdan oldin commit imzosi, branch himoyasi yoki kod ko‘rigi kabi tashkiliy nazoratlar ham hisobga olinadi.

Pull bajarilishidan oldin remote URL tekshirilsa, mirror yoki vaqtinchalik repositorydan noto‘g‘ri tarix olish xavfi kamayadi. Integratsiyadan keyin testlarni ishga tushirish remote kod sintaktik jihatdan birlashgan bo‘lsa ham, lokal muhitdagi bog‘liqliklar bilan mosligini ko‘rsatadi.

Bog‘liq tushunchalar

Git, fetch, merge, rebase, upstream branch, remote, fast-forward