Git sozlash — git config, username, email, default editor

~10 daq · Git · Kirish va O'rnatish

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.com manzilini 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 :wq va 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 aylantiradi
  • input — 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.name va user.email — har bir commit da muallif
  • GitHub email bilan mos bo'lsin (yoki noreply email)
  • init.defaultBranch main
  • core.editor "code --wait" — vim o'rniga
  • core.autocrlf — Windows true, Mac/Linux input
  • Uch daraja: --system, --global (~/.gitconfig), lokal (.git/config)
  • git config --list --show-origin — barcha sozlamalar va manbalari
  • alias — qisqa buyruqlar

Keyingi dars

4-dars: GitHub nima? Git va GitHub farqi. Account, SSH key sozlash