Mundarija (38)
- Bu darsda
- 1. Nega bu kerak?
- 2. Git bormi va qaysi versiya?
- 2.1 Versiyani tekshirish
- 2.2 Git topilmasa
- 3. Sozlamalar qayerda yashaydi?
- 3.1 Uch daraja
- 3.2 Hozir sizda nima bor?
- 4. Kimligingizni aytish: user.name va user.email
- 4.1 Aytmasangiz nima bo'ladi?
- 4.2 To'g'ri sozlash
- 4.3 Qaysi email yozish kerak?
- 5. Standart branch nomi: init.defaultBranch main
- 5.1 Muammo
- 5.2 Sozlamasa nima bo'ladi?
- 5.3 Tuzatish
- 6. core.editor: tekshirish
- 7. Global fayl ichida nima bor?
- 7.1 --list va faylning o'zi
- 7.2 Yangi sintaksis: get, set, unset, list
- 8. Local daraja: bitta repo uchun boshqa qiymat
- 9. Git Credential Manager: parol o'rniga
- 9.1 Muammo
- 9.2 Yechim
- 10. Ko'p uchraydigan xatolar
- 10.1 Qo'shtirnoqsiz ism
- 10.2 Sozlama nomidagi xato
- 10.3 Bo'limsiz nom
- 10.4 Har repoda qayta sozlash
- 10.5 Boshqa kompyuterda ishlash
- 11. Mashqlar
- 1-mashq (oson): Qaysi daraja?
- 2-mashq (o'rta): Bo'sh joylarni to'ldiring
- 3-mashq (qiyin): Stajyorning sozlamasi
- 4-mashq: Portfolio qadami — kompyuteringizni tayyorlang
- 12. Real ishda
- Xulosa
- Manbalar
Git'ni o'rnatish va birinchi sozlash: git config, ism, email va main
Qisqacha: Git'dan foydalanishdan oldin unga bir marta kimligingizni aytasiz:
git config --global user.name "Ism Familiya"vagit config --global user.email "email". Yangi repolarmainbranch bilan boshlanishi uchun —git config --global init.defaultBranch main. Sozlamalar uch darajada yashaydi: system, global va local; yaqinrog'i ustun turadi. Qaysi qiymat qayerdan kelganinigit config --list --show-originko'rsatadi.
Bu darsda
- Git o'rnatilganini va versiyasini tekshirasiz.
- Sozlamalarning uch darajasini (system, global, local) va ularning ustunlik tartibini tushuntirasiz.
- Ism, email va standart branch nomini to'g'ri sozlaysiz.
--show-originva--show-scopebilan "bu qiymat qayerdan keldi?" savoliga javob topasiz.- Git Credential Manager nima ishlashini va parol nega so'ralmasligini bilasiz.
Oldin bilishingiz kerak: Versiya nazorati nima, Dastur o'rnatish va paket menejerlari, Vim'da omon qolish.
1. Nega bu kerak?
Oldingi darsda har bir commitda muallif va email yozilishini ko'rdik: Author: Aziz Karimov <aziz@example.com>. Git bu ma'lumotni qayerdan oladi? O'zi o'ylab topmaydi — siz aytasiz. Aytmasangiz, birinchi commitdayoq to'xtaydi.
Yangi telefon olganingizni eslang. Birinchi yoqqanda til, vaqt mintaqasi va akkauntni so'raydi. Bir marta sozlaysiz — keyin yillab o'ylamaysiz. Git ham shunday: to'rt-besh sozlama bir marta to'g'ri qo'yilsa, keyingi ko'p muammolarning oldi olinadi.
Yaxshi xabar: ishning yarmi allaqachon bajarilgan. Git Dastur o'rnatish darsida o'rnatilgan, Git uchun muharrir esa Vim darsida sozlangan. Bugun qolganini qo'shamiz va hammasini tekshiramiz.
2. Git bormi va qaysi versiya?
2.1 Versiyani tekshirish
Git'ni qayta o'rnatish shart emas. Git Bash'ni oching va yozing:
git --versionTerminalda (Windows):
git version 2.54.0.windows.1Sizda raqam boshqacha bo'lishi mumkin — Git har bir-ikki oyda yangilanadi. Kursdagi misollar 2.54 da sinalgan. Sizniki 2.40 dan eski bo'lsa, Dastur o'rnatish darsidagi winget upgrade --id Git.Git -e bilan yangilang.
Oxiridagi .windows.1 — bu Git for Windows: Git'ning Windows uchun yig'ilgan nashri. U bilan birga Git Bash, nano, vim va Git Credential Manager ham keladi. macOS va Linux'da bu qo'shimcha bo'lmaydi: u yerda git version 2.54.0 kabi qisqa chiqadi.
2.2 Git topilmasa
bash: git: command not found chiqsa, Git o'rnatilmagan yoki PATH'da yo'q. Bu xabarni Dastur o'rnatish darsida batafsil ko'rgan edik. Tuzatish: Git'ni o'rnating va terminalni yopib, qayta oching. Yangi PATH faqat yangi ochilgan terminalga ta'sir qiladi (PATH).
3. Sozlamalar qayerda yashaydi?
3.1 Uch daraja
Git sozlamalari oddiy matnli fayllarda turadi. Bunday fayl uchta, har biri o'z "darajasi"da:
| Daraja | Kimga ta'sir qiladi | Qayerda (Windows) |
|---|---|---|
| system | Kompyuterdagi hamma foydalanuvchiga | C:/Program Files/Git/etc/gitconfig |
| global | Faqat sizga, hamma repolaringizda | C:/Users/<ism>/.gitconfig |
| local | Faqat bitta repoda | repo ichidagi .git/config |
Bir sozlama bir nechta darajada yozilgan bo'lsa, yaqinrog'i yutadi: local global'dan, global system'dan ustun.
Maktabni tasavvur qiling. Vazirlikning qoidasi bor (system). Maktab direktori o'z qoidasini qo'shadi (global). Sinf rahbari esa bitta sinf uchun alohida qoida o'rnatishi mumkin (local). Sinfda sinf rahbarining so'zi amal qiladi, chunki u eng yaqin.
flowchart LR
S["system<br/>Git for Windows"] --> G["global<br/>~/.gitconfig"]
G --> L["local<br/>.git/config"]
L --> R["Amaldagi<br/>qiymat"]Nimaga qarang: o'q chapdan o'ngga — Git fayllarni shu tartibda o'qiydi. Keyin o'qilgan qiymat oldingisini "bosib" ketadi. Shuning uchun eng o'ngdagisi ustun.
Git hujjatida yana ikkita kamdan-kam darajani ham ko'rasiz: worktree (Worktree darsida kerak bo'ladi) va buyruq qatoridagi -c (faqat bitta buyruq uchun). Hozircha uchtasi yetarli.
3.2 Hozir sizda nima bor?
Hamma sozlamalarni qayerdan kelgani bilan ko'raylik:
git config --list --show-originGit'ni endigina o'rnatgan kompyuterda (global sozlama hali yo'q) biz shuni oldik:
file:D:/Dasturlash/Install/Git/etc/gitconfig diff.astextplain.textconv=astextplain
file:D:/Dasturlash/Install/Git/etc/gitconfig filter.lfs.clean=git-lfs clean -- %f
file:D:/Dasturlash/Install/Git/etc/gitconfig filter.lfs.smudge=git-lfs smudge -- %f
file:D:/Dasturlash/Install/Git/etc/gitconfig filter.lfs.process=git-lfs filter-process
file:D:/Dasturlash/Install/Git/etc/gitconfig filter.lfs.required=true
file:D:/Dasturlash/Install/Git/etc/gitconfig http.sslbackend=openssl
file:D:/Dasturlash/Install/Git/etc/gitconfig http.sslcainfo=D:/Dasturlash/Install/Git/mingw64/etc/ssl/certs/ca-bundle.crt
file:D:/Dasturlash/Install/Git/etc/gitconfig core.autocrlf=true
file:D:/Dasturlash/Install/Git/etc/gitconfig core.fscache=true
file:D:/Dasturlash/Install/Git/etc/gitconfig core.symlinks=false
file:D:/Dasturlash/Install/Git/etc/gitconfig pull.rebase=false
file:D:/Dasturlash/Install/Git/etc/gitconfig credential.helper=manager
file:D:/Dasturlash/Install/Git/etc/gitconfig credential.https://dev.azure.com.usehttppath=true
file:D:/Dasturlash/Install/Git/etc/gitconfig init.defaultbranch=masterQo'rqmang, hammasini tushunish shart emas. Qatorni bo'laklab o'qiymiz:
file:D:/.../etc/gitconfig— qiymat qaysi fayldan kelgani. Hammasi bitta fayldan — bu system daraja. Bizning kompyuterda GitD:diskka o'rnatilgan. Odatiy o'rnatishda yo'lC:/Program Files/Git/etc/gitconfigbo'ladi.- Tab belgisidan keyin —
bo'lim.nom=qiymat. Masalancore.autocrlf=true: bo'limcore, nomautocrlf, qiymattrue.
Bu ro'yxatni Git for Windows o'rnatuvchisi yozgan. Undagi to'rttasi siz uchun muhim:
| Sozlama | Ma'nosi | Qaysi darsda |
|---|---|---|
core.autocrlf=true |
Qator oxirlarini avtomatik almashtirish | .gitattributes |
credential.helper=manager |
Parolni Git Credential Manager saqlaydi | shu dars |
pull.rebase=false |
git pull qanday birlashtirishi |
Ajralgan tarix |
init.defaultbranch=master |
Yangi repo'dagi branch nomi | shu dars |
core.autocrlf ni taniysizmi? Qator oxiri darsida "Windows'ga Git o'rnatilganda u o'zi ham qator oxirlarini almashtirib turadi" degan edik. Mana u — system faylda. Uni hozir o'zgartirmaymiz: to'g'ri yechim .gitattributes va u alohida darsda.
Maslahat: Faqat daraja nomi kerak bo'lsa,
--show-origino'rniga--show-scopeyozing. Qator boshida uzun yo'l o'rniga qisqasystem,globalyokilocalchiqadi — o'qish osonroq.
git config --list --show-scopesystem diff.astextplain.textconv=astextplain
system filter.lfs.clean=git-lfs clean -- %f
...
system init.defaultbranch=master(Bu yerda o'rtadagi qatorlarni ... bilan qisqartirdik — ular yuqoridagi bilan bir xil.)
Tekshirib ko'ring:
core.editorsystem fayldavim, global fayldacode --waitdeb yozilgan. Git commit xabari uchun qaysi muharrirni ochadi?
Javob
VS Code (code --wait). Global daraja system'dan keyin o'qiladi va uning qiymatini bosib ketadi. Repo ichidagi .git/config da boshqa qiymat bo'lsa edi, o'sha yutardi.
4. Kimligingizni aytish: user.name va user.email
4.1 Aytmasangiz nima bo'ladi?
Avval ataylab xato qilamiz. Global sozlamasi bo'm-bo'sh kompyuterda repo ochib, commit qilmoqchi bo'ldik (bu buyruqlarni Birinchi repo darsida o'rganasiz — hozir faqat natijaga qarang):
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got '...@....(none)')Tarjimasi:
Author identity unknown— "muallifning kimligi noma'lum".Please tell me who you are.— "Iltimos, kimligingizni ayting."Run ... to set your account's default identity.— "hisobingizning asosiy kimligini o'rnatish uchun shu buyruqlarni bajaring".Omit --global to set the identity only in this repository.— "--globalni tashlab yozsangiz, kimlik faqat shu repoda o'rnatiladi".fatal: unable to auto-detect email address— "email manzilini o'zim aniqlay olmadim".
Nega aynan shunday? Git har bir commitga muallif yozishi shart. Sozlama bo'lmasa, u kompyuterdagi foydalanuvchi nomi va kompyuter nomidan email yasab ko'radi. Qavs ichida aynan shu urinish ko'rinadi. Biz o'sha ikki nomni ... bilan yashirdik — sizda o'zingizniki chiqadi. Bunday "email" haqiqiy emas, shuning uchun Git to'xtaydi. Xabarning o'zi tuzatish yo'lini ham ko'rsatgan — Git xabarlarini oxirigacha o'qish foydali.
4.2 To'g'ri sozlash
Ism va emailni bir marta global darajada yozamiz:
git config --global user.name "Aziz Karimov"
git config --global user.email "aziz@example.com"Muvaffaqiyatli bo'lsa, Git hech narsa demaydi. Terminal jim — bu yaxshi belgi. Tekshirish uchun qiymatsiz so'raymiz:
git config --global user.name
git config --global user.emailAziz Karimov
aziz@example.comBuyruq qismlari:
git config— sozlamani o'qish yoki yozish.--global— global daraja, ya'ni sizning~/.gitconfigfaylingiz.user.name— bo'limuser, nomname."Aziz Karimov"— qiymat. Ichida bo'sh joy bor, shuning uchun qo'shtirnoq majburiy.
O'zingizda "Aziz Karimov" o'rniga o'z ismingizni yozing. Lotin harflarida yozish qulay: ba'zi vositalar kirill yoki o' dagi apostrofni noto'g'ri ko'rsatishi mumkin.
4.3 Qaysi email yozish kerak?
Commitdagi email ochiq bo'ladi. Repo GitHub'ga chiqsa, har kim git log bilan uni ko'radi. Shuning uchun ikki yo'l bor:
- Ish uchun ochiq email. Maxsus ochilgan pochta — spam kelsa ham achinmaysiz.
- GitHub'ning "noreply" manzili. GitHub har bir akkauntga yashirin manzil beradi. GitHub hujjatiga ko'ra, u
ID+USERNAME@users.noreply.github.comko'rinishida — raqamli ID va loginingiz. Uni GitHub'da Settings → Access bo'limi → Emails sahifasidan topasiz. U yerda Keep my email addresses private katakchasi ham bor.
Qaysi birini tanlasangiz ham, bitta qoida: email GitHub akkauntingizga qo'shilgan bo'lsin. GitHub commitlarni akkauntga aynan email orqali bog'laydi. Bog'lanmasa, commitlar profilingizda "sizniki" bo'lib ko'rinmaydi.
Tekshirib ko'ring: Malika global emailni yozdi, lekin
user.nameni unutdi. U commit qila oladimi?
Javob
Qila oladi — lekin ismi noto'g'ri yoziladi. Ism bo'lmasa, Git uni o'zi topishga urinadi. Biz Windows'da sinadik: commit bo'ldi, muallif esa unknown <malika@example.com> bo'lib yozildi (unknown — "noma'lum"). Boshqa kompyuterda o'rniga kompyuterdagi foydalanuvchi nomi tushishi mumkin. Xato xabari chiqmagani uchun bu sezilmay qoladi. To'g'ri yo'l — ikkalasini ham aniq sozlash va git config --global user.name bilan tekshirish.
5. Standart branch nomi: init.defaultBranch main
5.1 Muammo
Birinchi deploy darsida GitHub Pages'ni yoqqanda branch sifatida main ni tanlagan edingiz. GitHub'da yangi repolar main bilan boshlanadi. Git esa hozircha o'zi master nomini beradi.
Tekshiramiz:
git config --get init.defaultBranchmasterBu qiymat system fayldan kelyapti — yuqoridagi ro'yxatning oxirgi qatori. Git for Windows o'rnatuvchisida standart branch nomini so'raydigan oyna bor. Tanlovingizga qarab bu qator sizda bo'lmasligi ham mumkin. Unda buyruq hech narsa chiqarmaydi.
5.2 Sozlamasa nima bo'ladi?
Bu qator umuman bo'lmagan kompyuterda Git 2.54 yangi repo ochganda uzun maslahat chiqaradi. Uni system faylni vaqtincha o'chirib, "toza" holatda oldik:
hint: Using 'master' as the name for the initial branch. This default branch name
hint: will change to "main" in Git 3.0. To configure the initial branch name
hint: to use in all of your new repositories, which will suppress this warning,
hint: call:
hint:
hint: git config --global init.defaultBranch <name>
...Tarjimasi: "Boshlang'ich branch nomi sifatida master ishlatilmoqda. Bu standart nom Git 3.0 da main ga o'zgaradi. Barcha yangi repolaringiz uchun nomni sozlash va bu ogohlantirishni o'chirish uchun shu buyruqni bajaring". hint: — "maslahat", bu xato emas. Pastki qatorlarni ... bilan qisqartirdik: ularda muqobil nomlar va branch'ni qayta nomlash buyrug'i bor.
Oldingi darsda aytgan Git 3.0 rejasi shu. Rasmiy "BreakingChanges" hujjatida ham yozilgan: yangi repolarda standart nom main bo'ladi.
5.3 Tuzatish
Kutib o'tirmaymiz — hozirdan main qilamiz:
git config --global init.defaultBranch main
git config --get init.defaultBranchmainGlobal qiymat system'dagi master ni bosib ketdi. Qaysi fayldan kelganini ko'ramiz:
git config --get --show-origin init.defaultBranchfile:C:/Users/.../uy/.gitconfig mainBu yerda yo'lni qisqartirdik: biz sinovni vaqtinchalik papkada o'tkazdik. Sizda file:C:/Users/<ismingiz>/.gitconfig chiqadi.
Yangi repo endi darhol main bilan tug'iladi. Ogohlantirish ham chiqmaydi:
Initialized empty Git repository in C:/Users/.../kurs/bahor/.git/Bu sozlama faqat yangi repolarga ta'sir qiladi. Oldin ochilgan repodagi branch nomi o'zgarmaydi — uni qanday almashtirishni Branch nima darsida ko'rasiz.
Tekshirib ko'ring: Sozlama nomi
init.defaultBranch, lekin--listnatijasidainit.defaultbranch(kichikb) chiqdi. Xatomi?
Javob
Xato emas. Git sozlama nomlarida katta-kichik harfni farqlamaydi va ro'yxatda ularni kichik harf bilan ko'rsatadi. init.defaultBranch deb yozish — hujjatdagi o'qilishi oson shakl. Qiymat (main) esa katta-kichik harfni farqlaydi.
6. core.editor: tekshirish
Vim darsida Git uchun muharrirni sozlagan edik. Hozir faqat tekshiramiz:
git config --global core.editorcode --waitShunday chiqsa — hammasi joyida: commit xabari uchun VS Code ochiladi. nano chiqsa ham yaxshi. Hech narsa chiqmasa, Vim darsidagi buyruqni takrorlang:
git config --global core.editor "code --wait"--wait siz yozsangiz, Git kutmaydi va Aborting commit due to empty commit message. deydi — bu tuzoqni o'sha darsda ko'rgan edik.
7. Global fayl ichida nima bor?
7.1 --list va faylning o'zi
Hozirgacha to'rtta global sozlama yozdik. Hammasini ko'ramiz:
git config --global --listuser.name=Aziz Karimov
user.email=aziz@example.com
init.defaultbranch=main
core.editor=code --waitFaylning o'zini cat ~/.gitconfig bilan ochsak:
[user]
name = Aziz Karimov
email = aziz@example.com
[init]
defaultBranch = main
[core]
editor = code --waitBu — INI formati (YAML, TOML, INI darsida ko'rgan edingiz): kvadrat qavsda bo'lim, ostida nom = qiymat. git config shu faylga yozadi, xolos. Uni VS Code'da qo'lda ham tahrirlash mumkin: git config --global --edit buyrug'i uni core.editor dagi muharrirda ochadi.
Maslahat: Git'ning barcha sozlamalari hujjati:
git help config. Windows'da u brauzerda ochiladi — Git for Windows hujjatni kompyuterga o'zi bilan olib keladi, internet shart emas.
7.2 Yangi sintaksis: get, set, unset, list
Git 2.46 ning release notes'ida yozilgan: git config ning --get kabi "rejim" flaglari eskirgan (deprecated) deb belgilandi va o'rniga aniq nomli buyruqlar qo'shildi. Rasmiy hujjatdagi moslik:
| Eski shakl | Yangi shakl |
|---|---|
git config user.name |
git config get user.name |
git config user.name "Aziz" |
git config set user.name "Aziz" |
git config --unset user.name |
git config unset user.name |
git config --list |
git config list |
--global, --show-origin va --show-scope ikkala shaklda ham bir xil ishlaydi:
git config get user.name
git config set --global user.email "aziz@example.com"
git config list --show-scopeBirinchisi Aziz Karimov ni chiqardi — git config user.name bilan bir xil.
Unda nega shu darsda eski shaklni yozdik? Chunki u hali ham to'liq ishlaydi va hamma joyda: Git'ning o'z xato xabarida («Author identity unknown» ni eslang), GitHub hujjatlarida va internetdagi deyarli har bir yo'riqnomada. Uni o'qiy olishingiz shart. Yangi shaklni esa o'zingiz yozishda afzal ko'ring — u aniqroq va bitta tuzoqdan himoya qiladi (buni «Ko'p uchraydigan xatolar» da ko'rasiz). Git'ning o'zi ham asta-sekin o'tyapti: standart branch haqidagi hint ning biz ... bilan qisqartirgan oxirida git config set advice.defaultBranchName false buyrug'i turibdi.
8. Local daraja: bitta repo uchun boshqa qiymat
Tasavvur qiling: Aziz ishga kirdi. Ish repolarida kompaniya emaili, shaxsiy loyihalarda — o'ziniki bo'lishi kerak. Buning uchun --global ni tashlab yozamiz, lekin repo ichida:
cd bahor
git config user.email "aziz.ish@example.com"
git config --show-origin user.emailfile:.git/config aziz.ish@example.comQiymat .git/config dan — local darajadan keldi. Global qiymat esa joyida:
git config --global user.emailaziz@example.comRepo ichidagi .git/config faylga qaraymiz:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[user]
email = aziz.ish@example.com[core] bo'limini git init o'zi yozgan — repo haqida texnik ma'lumot. Oxirgi ikki qator — bizniki. Local sozlamani olib tashlash uchun:
git config --unset user.email
git config --show-origin user.emailfile:C:/Users/.../uy/.gitconfig aziz@example.comLocal qiymat o'chdi va global qiymat yana amalda.
Diqqat:
--globalsizgit configrepo ichida jimgina faqat shu repoga yozadi. "Hamma joyda ishlasin" desangiz —--globalni unutmang.
Repo tashqarisida esa --global siz yozish xato beradi:
cd ~/kurs
git config user.email "aziz@example.com"fatal: not in a git directoryTarjimasi: "halokatli xato: Git papkasida emassiz". Local daraja — bu .git/config fayli. Repo bo'lmagan papkada bunday fayl yo'q, shuning uchun Git qiymatni yozadigan joy topa olmaydi.
9. Git Credential Manager: parol o'rniga
9.1 Muammo
Keyinroq commitlaringizni GitHub'ga yuborasiz (Remote). GitHub "siz kimsiz?" deb so'raydi. GitHub hujjatiga ko'ra, Git uchun GitHub parolingiz bilan kirish endi ishlamaydi — xavfsizroq usullar talab qilinadi. Har safar maxsus kalit (token) yaratib, uni terminalga qo'lda kiritish esa noqulay va xavfli.
9.2 Yechim
Git Credential Manager (GCM) — Git uchun kirish ma'lumotlarini xavfsiz saqlaydigan yordamchi dastur. U Git for Windows bilan birga keladi. System fayldagi credential.helper=manager qatori aynan uni yoqadi:
git config --show-scope credential.helper
git credential-manager --versionsystem manager
2.7.3+5fa7116896c82164996a609accd1c5ad90fe730aGit for Windows 2.54 ning rasmiy release notes'ida ham yozilgan: u GCM 2.7.3 bilan keladi. + dan keyingi uzun qism — dasturning ichki yig'ilish raqami, unga e'tibor bermang.
GitHub hujjati bo'yicha GCM shunday ishlaydi:
- Birinchi marta GitHub bilan HTTPS orqali gaplashganda, Git sizni brauzer oynasi orqali kirishga taklif qiladi.
- GitHub'ga odatdagidek kirasiz va ruxsat berasiz.
- GCM olingan kirish ma'lumotini Windows Credential Manager ga saqlaydi. Keyingi safar hech narsa so'ralmaydi.
Hozir hech narsa qilmaysiz — faqat bilib qo'ying. Brauzer oynasi birinchi marta ochilganda qo'rqmaysiz: bu GCM ishlayapti.
macOS va Linux'da. GCM u yerda alohida o'rnatiladi. macOS'da Git parollarni tizimning Keychain'iga saqlashi mumkin. Linux serverlarda odatda boshqa yo'l — SSH kalit ishlatiladi. Uni SSH kalit darsida o'rganasiz.
Tekshirib ko'ring: Nega GCM sozlamasi global emas, system faylda turibdi?
Javob
Uni Git for Windows o'rnatuvchisi yozgan — u kompyuterdagi hamma foydalanuvchi uchun Git'ni sozlaydi. Siz hech narsa qilmasangiz ham, GCM hamma repolaringizda ishlaydi. Global faylga faqat siz o'zingiz yozgan narsalar tushadi.
10. Ko'p uchraydigan xatolar
10.1 Qo'shtirnoqsiz ism
git config --global user.name Aziz Karimov
git config --global user.nameAzizXato xabari yo'q, lekin familiya yo'qoldi! Shell bo'sh joy bo'yicha so'zlarni ajratadi (Buyruq anatomiyasi): Git uchta argument oldi — user.name, Aziz va Karimov. Ismga faqat ikkinchisi, Aziz yoziladi. Uchinchisini eski git config xato demaydi: u buni qo'shimcha shart deb tushunadi ("eski qiymat shunga o'xshasa, almashtir"). Bu shartni bilish shart emas — muhimi, familiya jimgina tushib qoldi. Tuzatish: qiymatni doim qo'shtirnoqqa oling va yozgandan keyin tekshiring.
Yangi sintaksis bu yerda sizni himoya qiladi:
git config set --global user.name Aziz Karimoverror: wrong number of arguments, should be 2Tarjimasi: "xato: argumentlar soni noto'g'ri, 2 ta bo'lishi kerak" — nom va qiymat. Git uchinchi so'zni jimgina "shart" deb qabul qilmaydi, balki to'xtaydi. Qiymat o'zgarmay qoladi.
10.2 Sozlama nomidagi xato
git config --global user.nmae "Aziz"Git hech narsa demadi va buyruq muvaffaqiyatli tugadi. nmae — xato yozilgan name, lekin Git uchun bu shunchaki yangi, noma'lum sozlama. U faylga yozildi va hech qachon ishlatilmaydi. Tuzatish: noto'g'ri qatorni o'chiring va nomni tekshiring:
git config --global --unset user.nmae
git config --global --list10.3 Bo'limsiz nom
git config nomsizerror: key does not contain a section: nomsizTarjimasi: "xato: kalitda bo'lim yo'q: nomsiz". Har sozlama nomi bo'lim.nom ko'rinishida bo'lishi shart — user.name, core.editor. Nuqtasiz nomni Git tushunmaydi.
10.4 Har repoda qayta sozlash
Ba'zi boshlovchilar har yangi repoda git config user.name ... ni --global siz yozadi. Keyin yangi repoda yana "Author identity unknown" oladi. Kimlik bir marta, global darajada yoziladi. Local daraja — faqat istisno uchun (ish emaili kabi).
10.5 Boshqa kompyuterda ishlash
Kompyuter klassida yoki do'stingiz noutbukida --global bilan o'z ismingizni yozsangiz, u yerda keyin ishlagan har kim sizning nomingiz bilan commit qiladi. Begona kompyuterda local darajani ishlating yoki ishdan keyin git config --global --unset user.name bilan tozalang.
11. Mashqlar
1-mashq (oson): Qaysi daraja?
Har bir holat uchun daraja tanlang (system, global yoki local):
- Ismingizni kompyuterdagi hamma repolar uchun bir marta yozasiz.
- Faqat ish reposida kompaniya emailini ishlatasiz.
- Git for Windows o'rnatuvchisi
core.autocrlf=trueni yozdi. .git/configfaylida turgan sozlama.
Ishora: «Uch daraja» bo'limidagi jadval.
Yechim
- global —
--global,~/.gitconfig. - local — repo ichida
--globalsiz. - system — o'rnatuvchi hamma foydalanuvchi uchun yozadi.
- local —
.git/configrepo ichida.
2-mashq (o'rta): Bo'sh joylarni to'ldiring
Malika yangi noutbuk oldi. U hamma repolari uchun ism va emailini yozmoqchi, yangi repolar main bilan boshlansin. Keyin qiymat qayerdan kelayotganini tekshiradi.
git config user.name "Malika Yusupova"
git config --global "malika@example.com"
git config --global init.defaultBranch
git config --get init.defaultBranchIshora: daraja flagi — «To'g'ri sozlash» bo'limida, email sozlamasining nomi — «Kimligingizni aytish» sarlavhasida, "qayerdan keldi" flagi — «Hozir sizda nima bor?» bo'limida.
Yechim
git config --global user.name "Malika Yusupova"
git config --global user.email "malika@example.com"
git config --global init.defaultBranch main
git config --get --show-origin init.defaultBranchOxirgi buyruq file:C:/Users/Malika/.gitconfig main kabi qator chiqaradi: qiymat main, u global fayldan.
3-mashq (qiyin): Stajyorning sozlamasi
Stajyor Sardor git config --list --show-scope natijasini yubordi va "commitlarim GitHub profilimda ko'rinmayapti, ismim ham chala" dedi:
system core.autocrlf=true
system credential.helper=manager
system init.defaultbranch=master
global user.name=Sardor
global user.nmae=Sardor Aliyev
global user.email=sardor@kompyuter.local
local core.repositoryformatversion=0
local core.filemode=false
local core.bare=false
local core.logallrefupdates=true
local core.symlinks=false
local core.ignorecase=true
local user.email=sardor.ish@example.com- Uchta muammoni toping. (
local core.*qatorlarinigit inito'zi yozgan — ular muammo emas.) - Har birini tuzatadigan buyruqni yozing.
Ishora: «Ko'p uchraydigan xatolar» bo'limining dastlabki ikki holati, email haqidagi «Qaysi email yozish kerak?» bo'limi va standart branch haqidagi bo'lim.
Yechim
Muammolar:
user.nmae— nom xato yozilgan, to'liq ism unda qolib ketgan. Git uni ishlatmaydi, shuning uchun commitda faqatSardor.- Global email
sardor@kompyuter.local— haqiqiy emas va GitHub akkauntiga bog'lanmagan. Commitlar profilda ko'rinmaydi. - Standart branch hali
master— global darajadamainyozilmagan. - Local email — muammo emas, agar bu ish reposi bo'lsa. Lekin u ham GitHub'ga qo'shilgan bo'lishi kerak.
Tuzatish:
git config --global --unset user.nmae
git config --global user.name "Sardor Aliyev"
git config --global user.email "sardor@example.com"
git config --global init.defaultBranch main
git config --list --show-scopeEmail o'rniga Sardor o'z GitHub akkauntiga qo'shilgan manzilni yoki noreply manzilini yozadi.
4-mashq: Portfolio qadami — kompyuteringizni tayyorlang
Portfolio'ni keyingi darslarda Git'ga topshirasiz. Buning uchun kompyuteringiz tayyor bo'lsin.
git --version— versiya 2.40 yoki yangiroq ekanini tekshiring.- GitHub'da Settings → Emails sahifasini oching. Qaysi email bilan commit qilishni tanlang: akkauntga qo'shilgan ochiq manzilmi yoki noreply manzilmi.
- Global darajada ism, tanlangan email va
init.defaultBranch mainni yozing. core.editorni tekshiring.git config --list --show-scopenatijasidaglobalqatorlarini sanang va har birini tushuntirib bering.
Yechim
git --version
git config --global user.name "Ismingiz Familiyangiz"
git config --global user.email "GitHub'dagi emailingiz"
git config --global init.defaultBranch main
git config --global core.editor
git config --list --show-scopeNatija oxirida kamida to'rtta global qator bo'lishi kerak:
global user.name=Aziz Karimov
global user.email=aziz@example.com
global init.defaultbranch=main
global core.editor=code --waitBu bizdagi natija, sizda o'z ism va emailingiz chiqadi. Ma'nosi: kim commit qiladi, qaysi email bilan, yangi repo qaysi branch bilan boshlanadi, xabar qaysi muharrirda yoziladi. core.editor bo'sh chiqsa — «core.editor: tekshirish» bo'limidagi buyruqni bajaring.
12. Real ishda
- Birinchi ish kuni. Yangi ish kompyuterida birinchi ishlardan biri —
user.namevauser.email. Ko'p kompaniyalarda ish emaili talab qilinadi: undan commit muallifi tekshiriladi. - Ikki kimlik. Shaxsiy va ish loyihalari bitta noutbukda bo'lsa, ish repolariga local email yoziladi. Tajribali dasturchilar buni avtomatlashtiradi —
includeIfsozlamasi bilan (papkaga qarab boshqa fayl ulanadi). Bu hozir shart emas. - Dotfiles. Ko'p dasturchilar
.gitconfigva boshqa sozlama fayllarini alohida repoda saqlaydi. Yangi kompyuterda bir buyruq bilan hammasi tiklanadi. - Intervyuda so'raladi: "Git sozlamalari qaysi darajalarda bo'ladi va qaysi biri ustun?", "Nega GitHub'da parol bilan push qilib bo'lmaydi?" Endi javobingiz tayyor.
Xulosa
- Git allaqachon o'rnatilgan —
git --versionbilan tekshiriladi; Windows'da u Git for Windows nashri. - Sozlamalar uch darajada: system, global (
~/.gitconfig), local (.git/config); yaqinrog'i ustun. user.namevauser.emailglobal darajada bir marta yoziladi; email ochiq bo'ladi va GitHub akkauntiga bog'langan bo'lsin.init.defaultBranch main— yangi repolar GitHub va Git 3.0 bilan bir xil nomda boshlanadi.--show-originva--show-scopeqiymat qayerdan kelganini ko'rsatadi.- GCM parol o'rniga brauzer orqali kirishni boshqaradi va ma'lumotni Windows Credential Manager'da saqlaydi.
Keyingi dars: Uch hudud: working tree, staging area, repository — Git fayllarni qaysi uch joy orasida ko'chirishini ko'ramiz.
Manbalar
- Git hujjati: "git-config" (FILES,
--show-origin,--show-scope) — git-scm.com/docs/git-config - Git hujjati: "BreakingChanges" (Git 3.0 da
main) — git-scm.com/docs/BreakingChanges - Git for Windows 2.54.0 Release Notes (GCM 2.7.3) — gitforwindows.org
- GitHub Docs: "Caching your GitHub credentials in Git", "About remote repositories", "Setting your commit email address" — docs.github.com
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!