Maqolalar 6 daqiqa 47 ko‘rish
Git bo‘yicha ko‘p so‘raladigan savollar
Git'ning rasmiy FAQ'i o‘zbekchada: ism va email sozlash, parol so‘ralishini to‘xtatish, fetch va pull farqi, oxirgi commitni tuzatish, o‘chirilgan commitni topish, satr oxirlari va platformalararo muammolar.
Mundarija
Bu bo‘lim Git'ning rasmiy savol-javob ro‘yxati. Ishlayotganda to‘satdan chiqadigan savollar shu yerda: nega har safar parol so‘raladi, fetch bilan pull farqi nima, o‘chirib yuborilgan commitni qanday topaman. Boshidan oxirigacha o‘qish shart emas — kerakli savolni qidirib toping.
Bu ma’lumotnoma, dars emas
Bu qism Git'ning rasmiy qo‘llanmasi (git help faq, Git 2.50.1) asosida
o‘zbekchaga o‘girilgan. Ketma-ket bajariladigan dars emas: kerak
bo‘lganda ochib, kerakli joyini o‘qiysiz. Git'ni noldan o‘rganmoqchi
bo‘lsangiz, avval Git va GitHub darslarini
bajaring.
Nomi#
gitfaq — Git’dan foydalanish bo‘yicha tez-tez so‘raladigan savollar.
Sozlash#
Ism va email qanday sozlanadi?#
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
Bitta repozitoriy uchun --global ni olib tashlang. Qiymat qayerdan kelganini ko‘rish:
git config --show-origin --get-regexp '^user\.'
Tahrirlagichni qanday tanlayman?#
git config --global core.editor "vim"
git config --global sequence.editor "vim"
GIT_EDITOR, VISUAL va EDITOR muhit o‘zgaruvchilari ham ta’sir qiladi.
Standart branch nomini qanday tanlayman?#
git config --global init.defaultBranch main
Buyruq uchun alias qanday yaratiladi?#
git config --global alias.lg 'log --graph --oneline --decorate --all'
Keyin git lg ishlaydi. ! bilan boshlangan alias shell buyrug‘ini bajaradi; ishonchsiz konfiguratsiyada bunday alias xavfli bo‘lishi mumkin.
Kirish ma’lumotlari#
Git nega har safar parol so‘raydi?#
Mos credential helper sozlang:
git config --global credential.helper cache
Operatsion tizim keychain’i yoki Git Credential Manager kabi xavfsiz helper afzal. credential.helper store parol/tokenni ochiq matnda saqlaydi.
HTTPS paroli ishlamayapti#
Ko‘p hosting xizmatlari akkaunt paroli o‘rniga personal access token talab qiladi. Token huquqlarini minimal qiling va uni commit, URL yoki logga yozmang.
SSH va HTTPS credentiallari bir xilmi?#
Yo‘q. HTTPS Git credential helper’lardan, SSH esa SSH agent, kalit fayllari va ~/.ssh/config dan foydalanadi.
Ma’lumot uzatish#
fetch va pull farqi nima?#
git fetch faqat masofaviy ma’lumot va remote-tracking ref’larni yangilaydi. git pull avval fetch, keyin sozlamaga qarab merge yoki rebase qiladi.
git fetch origin
git log HEAD..origin/main
git merge origin/main
Bitta branchni qanday klonlayman?#
git clone --single-branch --branch main <url>
Tarix hajmini kamaytirish uchun shallow yoki partial clone:
git clone --depth=1 <url>
git clone --filter=blob:none <url>
Shallow clone ayrim tarix amallarini cheklaydi.
Push non-fast-forward sababli rad etildi#
Remote’dagi yangi commitlarni oling va o‘z ishingizni birlashtiring:
git fetch origin
git rebase origin/main
git push origin main
Tarixni ataylab almashtirish zarur bo‘lsa, oddiy --force o‘rniga xavfsizroq:
git push --force-with-lease origin main
Public branchda buni faqat jamoa siyosati ruxsat etsa bajaring.
Keng tarqalgan muammolar#
Oxirgi commitni qanday tuzataman?#
git add <files>
git commit --amend
Bu commit ID’sini o‘zgartiradi; push qilingan commitni amend qilish tarixni qayta yozadi.
Commit qilinmagan o‘zgarishni qanday qaytaraman?#
git restore <file>
Staging’dan chiqarish:
git restore --staged <file>
Ikkalasi turli ish qiladi. Qaytarilgan commit qilinmagan tarkib odatda Git orqali tiklanmaydi.
O‘chirilgan commitni qanday topaman?#
git reflog
git show <old-id>
git branch recovery <old-id>
Reflog faqat mahalliy va vaqtinchalik saqlanadi; garbage collection’dan oldin tiklang.
Fayl nomining registri nega o‘zgarmadi?#
Registrga befarq filesystem’da oraliq nom ishlating:
git mv name.tmp intermediate.tmp
git mv intermediate.tmp Name.tmp
Bo‘sh katalogni qanday kuzataman?#
Git kataloglarni emas, fayl tarkibini kuzatadi. Katalogda .gitkeep kabi placeholder fayl yarating (nom Git uchun maxsus emas).
Katta binary fayllar uchun nima qilaman?#
Git LFS yoki artifact storage’dan foydalanishni ko‘rib chiqing. Oddiy Git tarixiga kiritilgan katta obyekt commit o‘chirilganda ham tarixda qolishi mumkin.
Merge va rebase#
Merge va rebase farqi nima?#
Merge ikki tarixni yangi merge commit bilan bog‘laydi va asl commitlarni saqlaydi. Rebase commitlarni yangi asos ustida qayta yaratib, chiziqli tarix beradi, ammo commit ID’larini o‘zgartiradi.
git merge topic
git rebase main topic
Public tarixni rebase qilmaslik umumiy qoidadir.
Konfliktni qanday hal qilaman?#
git status
# fayllarni tahrirlang
git add <resolved-files>
git merge --continue
# yoki rebase vaqtida:
git rebase --continue
Bekor qilish:
git merge --abort
git rebase --abort
Hooklar#
Hooklar .git/hooks/ ichidagi executable dasturlardir. Client-side hooklar klon bilan avtomatik ko‘chmaydi va xavfsizlik chegarasi emas. Majburiy siyosatni server-side pre-receive yoki update hooklarda tekshiring.
Hook ishlamasa:
- fayl executable ekanini;
- shebang va interpreter yo‘li to‘g‘riligini;
- hook nomida
.sampleqo‘shimchasi yo‘qligini; core.hooksPathboshqa katalogni ko‘rsatmayotganini tekshiring.
Platformalararo muammolar#
Satr oxirlari#
Git LF va CRLF o‘rtasidagi aylantirishni core.autocrlf va .gitattributes orqali boshqaradi. Loyiha siyosatini repozitoriydagi .gitattributes da aniq belgilang:
* text=auto
*.sh text eol=lf
*.bat text eol=crlf
*.png binary
Fayl rejimi#
Ba’zi filesystem’lar executable bitni ishonchli saqlamaydi. core.fileMode tekshiruvni boshqaradi. Repozitoriydagi bitni aniq o‘zgartirish:
git update-index --chmod=+x script.sh
Fayl nomlari#
Windows, macOS va Linux registr sezgirligi, Unicode normalizatsiyasi va taqiqlangan nomlar bo‘yicha farq qiladi. Platformalararo loyiha nomlarni faqat registr bilan farqlamasligi va portable belgilar ishlatishi kerak.
Git to‘plami#
git(1) buyruqlar to‘plamining bir qismi.