Git sozlash — git config, username, email, default editor
Muammodan boshlaylik
Git o'rnatildi. Birinchi commit ni qilishga urinasiz:
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"
Git har bir commit ga muallif ma'lumotini yozadi. Siz kimligingizni aytmaguningizcha — commit qilib bo'lmaydi. Bu darsda Git ni bir marta sozlaymiz — keyin bu haqda o'ylamaysiz.
Ism va email
git config --global user.name "Otabek Hasanov"
git config --global user.email "otabek@example.com"
Bu ma'lumot har bir commit da saqlanadi va jamoa a'zolari, GitHub hamda tarixni o'qigan har kim ko'radi:
commit a3f9c2b...
Author: Otabek Hasanov <otabek@example.com>
Date: Fri Nov 6 14:23:01 2026 +0500
Login sahifasi qo'shildi
[!INFO] GitHub commit larni sizning hisobingizga email bo'yicha bog'laydi. GitHub dagi email bilan bir xil bo'lsa — commitlar profilingizda ko'rinadi (yashil kvadratchalar). Emailni oshkor qilmoqchi bo'lmasangiz, GitHub → Settings → Emails da "Keep my email address private" ni yoqing va berilgan
12345+ism@users.noreply.github.commanzilini ishlating.
Asosiy branch nomi
git config --global init.defaultBranch main
Yangi repozitoriylarda asosiy branch — main bo'ladi (GitHub standarti). Eski Git versiyalarida standart nom master edi — ko'p eski loyihalarda hali ham uchraydi.
Muharrir
Git ba'zan matn yozishingizni so'raydi (commit xabari, merge xabari, interaktiv rebase). Standart holatda u vim ni ochadi — va ko'p yangi boshlovchilar undan chiqa olmay qoladi (Linux kursi, 12-dars).
O'zingizga qulay muharrirni tanlang:
git config --global core.editor "code --wait" # VS Code
git config --global core.editor "nano" # nano
git config --global core.editor "vim" # vim
--wait — Git VS Code dagi faylni yopishingizni kutadi.
[!TIP] Vim ochilib qolsa: Esc, keyin
:wqva Enter — saqlab chiqish.:q!— saqlamasdan chiqish.
Qator oxirlari (line endings)
Windows qator oxirida \r\n (CRLF), Linux va Mac — \n (LF) ishlatadi. Aralash jamoada bu "har bir qator o'zgargan" degan soxta farqlarga olib keladi.
# Windows da
git config --global core.autocrlf true
# Mac va Linux da
git config --global core.autocrlf input
true— repozitoriyga yozishda LF ga, olishda CRLF ga aylantiradiinput— faqat yozishda LF ga
Loyiha darajasida aniqroq boshqarish — .gitattributes (52-dars).
Foydali qo'shimcha sozlamalar
git config --global color.ui auto # rangli chiqish
git config --global pull.rebase false # git pull — merge bilan (22-dars)
git config --global push.autoSetupRemote true # birinchi push da upstream avtomatik (21-dars)
git config --global fetch.prune true # o'chirilgan remote branch larni tozalash
Alias — qisqa buyruqlar
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.sw switch
git config --global alias.br branch
git config --global alias.lg "log --oneline --graph --all --decorate"
Endi:
git st # = git status
git lg # chiroyli tarix grafigi
Sozlamalar qayerda saqlanadi
Uch daraja — har biri oldingisini qayta yozadi:
| Daraja | Bayroq | Fayl | Kim uchun |
|---|---|---|---|
| Tizim | --system |
/etc/gitconfig |
Kompyuterdagi barcha foydalanuvchilar |
| Global | --global |
~/.gitconfig |
Siz — barcha loyihalar |
| Lokal | --local (standart) |
.git/config |
Faqat shu repozitoriy |
Masalan, ish loyihalari uchun boshqa email:
cd ~/ish/kompaniya-loyiha
git config user.email "otabek@kompaniya.uz" # faqat shu repo uchun
Ko'rish va tekshirish
git config --list # barcha sozlamalar
git config --list --show-origin # ... va qaysi fayldan
git config user.name # bitta qiymat
git config --global --edit # ~/.gitconfig ni muharrirda ochish
~/.gitconfig — oddiy matnli fayl:
[user]
name = Otabek Hasanov
email = otabek@example.com
[init]
defaultBranch = main
[core]
editor = code --wait
autocrlf = true
[alias]
st = status
lg = log --oneline --graph --all --decorate
O'chirish:
git config --global --unset alias.co
Minimal sozlash — bir joyda
git config --global user.name "Ismingiz Familiyangiz"
git config --global user.email "email@example.com"
git config --global init.defaultBranch main
git config --global core.editor "code --wait"
git config --global core.autocrlf true # Windows; Mac/Linux da: input
Beshta qator — va Git ishga tayyor.
Nima uchun shunday?
Nima uchun Git email ni tekshirmaydi — istalgan ism va emailni yozish mumkin-ku?
To'g'ri: Git o'zi hech qanday tasdiqlash qilmaydi — user.name va user.email shunchaki matn. Kimdir sizning nomingiz bilan commit qilishi mumkin. Git ning maqsadi — tarixni yozish, shaxsni tasdiqlash emas. Tasdiqlash boshqa qatlamlarda: GitHub ga push qilish uchun hisobingizga kirish kerak (SSH kalit yoki token, 4-dars), commit larni esa kriptografik imzolash mumkin (GPG yoki SSH imzo, 51-dars) — GitHub ularni "Verified" belgisi bilan ko'rsatadi. Ochiq loyihalarda va kompaniyalarda imzolangan commitlar ko'pincha majburiy.
Xulosa
Eslab qoling:
git config --global user.namevauser.email— har bir commit da muallif- GitHub email bilan mos bo'lsin (yoki noreply email)
init.defaultBranch maincore.editor "code --wait"— vim o'rnigacore.autocrlf— Windowstrue, Mac/Linuxinput- Uch daraja:
--system,--global(~/.gitconfig), lokal (.git/config) git config --list --show-origin— barcha sozlamalar va manbalarialias— qisqa buyruqlar
Keyingi dars
4-dars: GitHub nima? Git va GitHub farqi. Account, SSH key sozlash