Push qilish — bu nima, git push qanday ishlaydi va qachon kerak

Muallif: IT Sectr Nashr etilgan: 2026-08-01 O'qish vaqti: 6 daq

Push qilish — lokal commit-larni uzoqdagi Git repozitoriyasiga yuborish, ularni jamoa a'zolari uchun mavjud qilish demakdir. Pushdan so'ng o'zgarishlar GitHub, GitLab yoki Bitbucketda paydo bo'ladi. GitHub Octoverse 2024 ma'lumotlariga ko'ra, platformaga har kuni 10 milliondan ortiq commit push qilinadi. Git push taqsimlangan jamoada ishni sinxronlashtirish uchun asosiy harakatdir.

Asosiy fikrlar

  • Push qilish — lokal commit-larni uzoq repozitoriyaga yuborish
  • Pushdan so'ng o'zgarishlar butun jamoaga ko'rinadi
  • Asosiy platformalar — GitHub, GitLab, Bitbucket
  • Xavfsiz push — faqat feature branch-larga, to'g'ridan-to'g'ri mainga emas
  • Pre-push hook-lar — yuborishdan oldin avtomatik kod tekshiruvi

Gitda push nima

Git push — bu lokal repozitoriyadan uzoq repozitoriyaga commit-larni uzatuvchi buyruq. Commitdan farqli o'laroq, o'zgarishlarni faqat dasturchining lokal mashinasida saqlaydi, push esa bu o'zgarishlarni butun jamoa uchun e'lon qiladi. Push Pull Request yaratish va deploy qilishdan oldin majburiy qadamdir.

Git arxitekturasi har bir dasturchining o'z lokal repozitoriyasida ishlashini nazarda tutadi. Commit-lar lokal ravishda yaratiladi va dasturchi ularni push qilishga qaror qilguncha to'planadi. Bu erkinlik beradi: ko'plab lokal commit-lar qilish, tajriba o'tkazish va tarixni jamoaga ta'sir qilmasdan qayta yozish mumkin.

bash
# Origin remote-ga push, main branch
git push origin main

# Joriy branchni remote-ga upstream bilan push qil
git push -u origin feature/new-dashboard

# Mos nomlar bilan barcha branchlarni push qil
git push --all origin

# Lease bilan force push (xavfsiz force push)
git push --force-with-lease

Pushdan so'ng uzoq repozitoriya refs-larni (branch havolalarini) yangilaydi, ular yangi commit-larga ishora qiladi. Boshqa dasturchilar bu o'zgarishlarni git pull yoki git fetch orqali olishlari mumkin. Aynan shu commit almashinuvi hamkorlikda ishlashning asosini tashkil qiladi.

Git push qanday ishlaydi

Git push buyrug'i lokal va uzoq branch-larni taqqoslaydi va faqat yetishmayotgan commit-larni uzatadi. Git barcha fayllarni qaytadan yubormaydi — faqat farqni (delta) uzatadi, bu esa push-ni katta repozitoriyalarda ham tez qiladi. Git Protokoli uzatiladigan ma'lumot hajmini minimallashtiradigan smart transferdan foydalanadi.

Agar uzoq branchda lokalda mavjud bo'lmagan commit-lar bo'lsa, push rad etiladi. Bu o'zgarishlarni yo'qotishning oldini oluvchi himoya mexanizmidir. Bunday vaziyatda dasturchi avval git pull-ni bajarishi, o'zgarishlarni birlashtirishi va shundan keyin qayta push qilishi kerak. Muqobil variant force push bo'lib, u uzoq branch-ni qayta yozadi, ammo ehtiyotkorlik bilan ishlatilishi kerak.

BuyruqHarakatQachon ishlatish
git pushtracked branchga standart pushodatiy o'zgarishlarni yuborish
git push -uupstream o'rnatish bilan pushyangi branchning birinchi pushi
git push --force-with-leasexavfsiz force pusho'z branch-ni rebase qilgandan keyin
git push --forcemajburiy pushfaqat kolliziya yo'qligiga ishonchingiz komil bo'lsa
git push --deleteuzoq branchni o'chirishbranch merge qilingandan keyin tozalash

Uzoq repozitoriyalarni tushunish to'g'ri pushning kalitidir. Odatda origin — standart uzoq repozitoriya nomi ishlatiladi. Git remote -v buyrug'i uzoq repozitoriyalar ro'yxatini va ularning URL-larini ko'rsatadi. Bir nechta remote qo'shish mumkin (masalan, asosiy repozitoriya uchun origin va fork uchun upstream).

Qachon push qilish kerak

Asosiy qoida: har bir mantiqiy tugallangan ish bosqichidan keyin push qilish kerak. Agar dasturchi vazifani yoki uning bir qismini tugatgan bo'lsa — push vaqti. Biroq, build-ni buzadigan tugallanmagan ishni push qilish tavsiya etilmaydi. Ishlaydigan build har qanday branchga push uchun minimal talabdir.

Jamoa ishlarida quyidagi ritm qabul qilingan: ertalab — hamkasblarning o'zgarishlarini olish uchun git pull, kun davomida — bir nechta commit va bir-ikki push, kechqurun — barcha tugallangan vazifalarning yakuniy pushi. Dasturchi qanchalik tez-tez push qilsa, branch-larni birlashtirishda konflikt xavfi shunchalik kam va ish jarayoni shunchalik shaffof bo'ladi.

  • Vazifani tugatgandan keyin — commit qilish va yakuniy yechimni feature branchga push qilish
  • Ketishdan oldin — tugallanmagan ishni feature branchga push qilish (mainga emas!)
  • PR yaratishdan oldin — barcha commit-lar push qilinganiga va review uchun mavjudligiga ishonch hosil qilish
  • Rebasedan keyin --force-with-lease bilan o'z feature branchiga push qilish

Xavfsiz push qoidalari

Xavfsiz push — jamoada ma'lumot yo'qotilishi va konfliktlarning oldini oluvchi qoidalar to'plamidir. Birinchi va eng muhim qoida: agar loyihada to'g'ridan-to'g'ri deploy sozlanmagan bo'lsa, hech qachon to'g'ridan-to'g'ri main yoki master branchga push qilmang. Zamonaviy jamoalarda main branch himoyasi GitHub branch protection darajasida sozlanadi.

Ikkinchi qoida: pushdan oldin uzoq branch bilan sinxronlashing. Birlashishda merge commitdan qochish uchun git pull --rebase-ni bajaring. Bu tarixni soddalashtiradi va uni chiziqli qiladi. Agar push rad etilsa — yalang'och force push ishlatmang, avval uzoq branchda qanday commit-lar paydo bo'lganini tekshiring.

Uchinchi qoida: yuborishdan oldin avtomatik testlar va linter-ni ishga tushiruvchi pre-push hook-larni sozlang. Agar testlar muvaffaqiyatsiz bo'lsa — push bloklanadi. Bunday hook-lar Husky yoki Git hooks (pre-push fayli .git/hooksda) orqali sozlanadi.

To'rtinchi qoida: katta ikkilik fayllarni push qilmang. Git ikkilik artefaktlarni saqlash uchun mo'ljallanmagan — ular repozitoriyani shishirib, operatsiyalarni sekinlashtiradi. Katta fayllar uchun Git LFS (Large File Storage) ishlatiladi. Agar ikkilik fayl allaqachon push qilingan va tarixga tushgan bo'lsa, uni git filter-branch orqali olib tashlash kerak.

Push o'tmasa nima qilish kerak

Muvaffaqiyatsiz pushning eng keng tarqalgan sababi — uzoq branchda lokalda mavjud bo'lmagan commit-larning borligi. Bu boshqa dasturchi o'z o'zgarishlarini xuddi shu branchga push qilganda sodir bo'ladi. Yechim: git pull-ni bajarish, mumkin bo'lgan konfliktlarni hal qilish va push-ni takrorlash.

bash
# Push rad etildi — avval fetch va rebase qil
git fetch origin
git rebase origin/main
# Konfliktlarni hal qil, keyin:
git push --force-with-lease

# Yoki oddiygina uzoq o'zgarishlarni birlashtir
git pull origin main
git push

Ikkinchi sabab — branchga yozish huquqining yo'qligi. Agar main branch branch protection qoidasi bilan himoyalangan bo'lsa, to'g'ridan-to'g'ri push-lar taqiqlangan. Yechim: feature branchga push qilish va Pull Request yaratish. Himoya sozlamalari odatda GitHub settings yoki GitLab protected branches orqali boshqariladi.

Uchinchi sabab — autentifikatsiya muammolari. Eski credentials, SSHga o'tish yoki personal access tokenning o'zgarishi. Yechim: remote URL-ni tekshirish (git remote -v) va credentials-ni yangilash. 2021-yildan boshlab GitHub HTTPS uchun parol bilan autentifikatsiyani bekor qildi — shaxsiy token yoki SSH kaliti ishlatiladi.

Tez-tez beriladigan savollar

Gitda push qilish nimani anglatadi?

Push qilish — dasturchi repozitoriyasidan uzoq serverga (GitHub, GitLab) lokal commit-larni yuborishni anglatadi. Pushdan so'ng o'zgarishlar jamoa uchun mavjud bo'ladi, Pull Requestda paydo bo'ladi va deploy qilinishi mumkin. Push jamoa hamkorligidan oldin lokal kod bilan ishlashning yakuniy bosqichidir.

Pushning commitdan farqi nima?

Commit o'zgarishlarni lokal ravishda, dasturchining repozitoriyasida saqlaydi. Push bu lokal commit-larni uzoq serverga yuboradi. Pushsiz ko'plab commit-lar qilish mumkin, ammo hamkasblar o'zgarishlarni ko'rishi uchun push qilish kerak. Commit — saqlash, push — e'lon qilish.

Git push rad etilsa nima qilish kerak?

Push, uzoq branchda lokalda mavjud bo'lmagan commit-lar bo'lganda rad etiladi. Yechim: git pull (yoki git fetch + git rebase) ni bajaring, o'zgarishlarni birlashtiring va push-ni takrorlang. Agar o'z feature branchingizda ishlayotgan bo'lsangiz va o'zgarishlarga ishonchingiz komil bo'lsa, git push --force-with-lease dan foydalaning.

Allaqachon qilingan pushni bekor qilish mumkinmi?

Ha, lekin ehtiyotkorlik bilan. O'zgarishlarni qaytaruvchi commit yaratish uchun git revert <commit-hash> dan foydalaning. So'ng yangi commit-ni push qiling. Agar commit-larni tarixdan olib tashlash kerak bo'lsa, git reset + git push --force-with-lease dan foydalaning, faqat o'z feature branchingizda. git revert umumiy branch-lar uchun xavfsiz tanlovdir.

Nima uchun har kuni push qilish muhim?

Muntazam push lokal mashina ishdan chiqqanda ma'lumot yo'qotilishining oldini oladi, birlashtirishda konfliktlarni kamaytiradi va jamoaga ish jarayoni haqida ma'lumot beradi. Agar dasturchi bir hafta push qilmasa, uning o'zgarishlari main branchdan ancha uzoqlashishi mumkin, bu esa merge paytida murakkab konfliktlarga olib keladi.

Xulosa

  • Push qilish — jamoa uchun lokal commit-larni uzoq repozitoriyaga yuborish
  • Commitdan farqi — commit lokal saqlaydi, push serverda e'lon qiladi
  • Main himoyasi — faqat feature branchlarga push, mainga PR orqali
  • Force push — faqat --force-with-lease bilan o'z branchlaringizda foydalaning
  • Pre-push tekshiruvlari — Git hooks yoki Husky orqali testlar va linterlar
  • Chastota — har bir mantiqiy tugallangan o'zgarishdan keyin push qiling
  • Muammolar — push rad etilsa avval pull yoki rebase, keyin qayta urinib ko'ring

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