2 β Git'ni o'rnatish va sozlash¶
β¬ οΈ Oldingi: 01 β Versiya nazorati nima? Β· π README Β· Keyingi: 03 β Birinchi repozitoriy va uch zona β‘οΈ
Bu bobda: kompyuteringizga Git'ni o'rnatamiz (Windows, macOS, Linux β har biri uchun alohida), terminal degan qora oynadan qo'rqmaslikni va undagi eng kerakli buyruqlarni (
pwd,cd,ls/dir) o'rganamiz, Git'ga "men kimman" deb tanishtiramiz (user.namevauser.emailβ har bir commit shu nom bilan imzolanadi), config'ning uch darajasi (system / global / local) qaysi biri qaysisini bosib o'tishini, default branch'nimainqilishni, sozlamalarni o'qishni (git config --list) va o'zingizga qisqa buyruqlar (alias) yaratishni ko'rib chiqamiz.
Muammo¶
Tasavvur qiling: 1-bobda versiya nazorati nima ekanini va Git nega kerakligini o'qib chiqdingiz. Endi qo'lingiz qichishyapti β birinchi git commit'ni yozib ko'rgingiz keladi. Lekin terminalni ochib git deb yozsangiz, javob shunday bo'lishi mumkin:
yoki Windows'da:
Sababi oddiy: Git β bu dastur, xuddi brauzer yoki Word kabi. Uni avval o'rnatish kerak. O'rnatib bo'lgandan keyin esa Git'ga o'zingizni tanishtirishingiz shart β chunki har bir saqlagan o'zgarishingizga (commit) "buni kim yozdi?" degan imzo qo'yiladi. Imzosiz Git ishlamaydi.
Bu bob ana shu ikki ishni qiladi: o'rnatish va sozlash. Bir marta qilinadi, keyin yillar davomida shu sozlama bilan ishlaysiz.
π Bu bobda terminalga buyruqlar yozamiz, lekin hali hech qanday "loyiha" yaratmaymiz β u 3-bobda bo'ladi. Hozir maqsad: Git tayyor turishi va sizni tanishi.
1-qadam: Git'ni o'rnatish¶
Git uchun yagona rasmiy manba β git-scm.com. Operatsion tizimingizga qarab quyidagi bo'limlardan birini tanlang. Uchchalasini ham o'qish shart emas β faqat o'zingizniqini.
Windows¶
Ikki yo'l bor, ikkalasi ham yaxshi:
Yo'l A β installer (eng oson):
- git-scm.com/download/win ga kiring β yuklab olish o'zi boshlanadi.
- Yuklangan
.exefaylni ishga tushiring. - O'rnatuvchi ko'p savol beradi β boshlovchi uchun hamma joyda "Next" tugmasini bosish kifoya. Standart sozlamalar to'g'ri tanlangan.
- Oxirida "Install" β "Finish".
Yo'l B β winget (buyruq orqali, tezroq):
Windows 10/11'da winget degan dastur menejeri o'rnatilgan bo'ladi. PowerShell'ni ochib quyidagini yozing:
π‘ Git installer'i bilan birga Git Bash degan maxsus terminal ham keladi. Bu β Windows'da Linux uslubidagi buyruqlar (ls, pwd) ishlaydigan qora oyna. Bu kitobdagi ko'p misollar Git Bash'da ham, oddiy PowerShell'da ham bir xil ishlaydi. Boshlanishiga Git Bash'dan foydalanishni tavsiya qilamiz β kitobdagi buyruqlarga aynan mos keladi.
macOS¶
Eng oson yo'l β Homebrew (macOS uchun mashhur dastur menejeri):
Agar Homebrew o'rnatilmagan bo'lsa, brew.sh dagi bitta buyruqni terminalga qo'ying β u o'zini o'rnatadi, keyin yuqoridagi buyruqni qayta yozing.
Homebrew o'rnatishni xohlamasangiz, Apple'ning developer vositalari bilan ham keladi:
π macOS'da "eski" Git allaqachon bo'lishi mumkin, lekin u juda eskirgan versiya bo'ladi. brew install git har doim eng yangisini beradi β shuni afzal ko'ring.
Linux¶
Distributivingizning paket menejeridan foydalaning:
# Debian, Ubuntu, Mint:
sudo apt update
sudo apt install git
# Fedora, RHEL, CentOS:
sudo dnf install git
# Arch, Manjaro:
sudo pacman -S git
sudo β buyruqni administrator huquqi bilan bajaradi; parol so'rashi mumkin (yozayotganda ko'rinmaydi β bu normal).
2-qadam: O'rnatilganini tekshirish¶
Operatsion tizimdan qat'i nazar, tekshirish bitta buyruq bilan bo'ladi. Terminalni oching va yozing:
Natija taxminan shunday bo'lishi kerak (raqamlar sizda boshqacharoq bo'lishi mumkin β muhimi, xato emas, versiya chiqsa):
β Versiya raqami chiqdimi β tabriklaymiz, Git o'rnatildi.
β Hali ham command not found chiqsa: terminalni butunlay yopib qaytadan oching (o'rnatishdan keyin shu kerak bo'ladi), so'ng qayta urinib ko'ring. Yordam bermasa β o'rnatishni qaytadan bajaring.
π --version oldidagi ikki chiziq (--) β bu Git buyruqlarida juda ko'p uchraydi. U "uzun nomli sozlama" degani. Bittagina chiziq (-v kabi) β qisqa shakli. Ikkalasini ham bobning oxirida batafsil ko'ramiz.
Terminal asoslari: qo'rqmaslikni o'rganamiz¶
Git'ning asosiy quvvati β terminalda. Ko'p boshlovchi aynan shu "qora oyna"dan qo'rqadi. Aslida unda atigi bir nechta buyruqni bilsangiz, o'zingizni baliq suvdagidek his qilasiz. Mana eng keraklilari:
| Buyruq | Vazifasi | Eslatma |
|---|---|---|
pwd |
Hozir qaysi papkadaman? | "print working directory" |
ls |
Shu papkada nima bor? | Windows PowerShell'da dir ham ishlaydi |
cd papka |
Papka ichiga kirish | "change directory" |
cd .. |
Bir papka yuqoriga chiqish | ikki nuqta β "ota papka" |
cd (yolg'iz) |
Uy (home) papkasiga qaytish | Windows'da cd %USERPROFILE% |
mkdir nom |
Yangi papka yaratish | "make directory" |
clear |
Ekranni tozalash | Windows'da cls |
Keling, ulardan birini sinab ko'ramiz. Terminalga pwd yozing:
Bu β siz hozir "Aziz" foydalanuvchisining uy papkasida turganingizni bildiradi. Endi shu papkadagi narsalarni ko'ramiz:
π Terminal har doim bitta papka "ichida" turadi β unga joriy papka (current directory) deyiladi. git buyruqlari ham aynan shu joriy papkada ishlaydi. Shuning uchun ish boshlashdan oldin pwd bilan "qayerdaman?" deb tekshirish β juda foydali odat.
π‘ Terminalda Tab tugmasi β sehrli. Papka nomining bir-ikki harfini yozib Tab bossangiz, terminal qolganini o'zi to'ldiradi. cd Down deb Tab bosing β cd Downloads/ bo'lib qoladi. Bu vaqtni va xatolarni kamaytiradi.
3-qadam: Git'ga o'zingizni tanishtirish (eng muhim sozlama)¶
Git'ning birinchi va eng muhim qoidasi: har bir commit kim tomonidan yozilganini biladi. Loyihada 10 kishi ishlasa, har kim o'z o'zgarishiga imzo qo'yadi. Shuning uchun Git'ga ikkita narsani aytishingiz shart β ismingiz va elektron pochtangiz:
π Ismni tirnoq ichida yozing, agar bo'sh joy bo'lsa (ism va familiya orasida) β tirnoqsiz Git ularni ikki alohida narsa deb o'ylaydi. Email'da bo'sh joy yo'q, lekin tirnoq ichida yozish baribir xavfsiz odat.
π‘ Email sifatida GitHub'da ro'yxatdan o'tadigan pochtangizni yozing (GitHub'ni 10-bobda ochamiz). Shunda kelajakda commitlaringiz GitHub'dagi profilingizga avtomatik bog'lanadi. Hali GitHub yo'q bo'lsa β hozir oddiy pochtangizni yozing, keyin o'zgartirsa bo'ladi.
Yozganingizni tekshiramiz:
β Ism qaytib chiqdimi β Git endi sizni taniydi. Bu sozlamani bir marta qilasiz, u butun kompyuteringizdagi barcha loyihalar uchun amal qiladi.
β Agar bu sozlamani qilmasdan commit yozmoqchi bo'lsangiz, Git ogohlantirish beradi:
Demak, bu sozlama ixtiyoriy emas β Git ishlashi uchun majburiy.
Config darajalari: system, global, local¶
Yuqorida --global so'zini ishlatdik. Bu β sozlamaning darajasi. Git'da sozlamalar uch darajada saqlanadi va ular bir-birini bosib o'tadigan tartibga ega. Buni tushunish β Git bilan ishonchli ishlashning kalitlaridan biri.
| Daraja | Bayroq | Qayerda saqlanadi | Kimga ta'sir qiladi |
|---|---|---|---|
| system | --system |
Git o'rnatilgan papkada (umumiy) | Shu kompyuterdagi hamma foydalanuvchi |
| global | --global |
Uy papkangizda .gitconfig |
Sizning barcha loyihalaringiz |
| local | --local |
Loyiha ichida .git/config |
Faqat shu bitta loyiha |
Eng muhim qoida β ustuvorlik:
Ya'ni: agar bitta sozlama uch joyda ham boshqacha qiymatga ega bo'lsa, Git eng quyi (local) darajadagisini tanlaydi. Local bo'lmasa β global'ga qaraydi. U ham bo'lmasa β system'ga.
Nima uchun bu foydali? Aytaylik, ishxonangizda ishchi pochtangiz (oqil@kompaniya.uz) bilan commit qilasiz, uyda esa shaxsiy pochtangiz bilan. Global'da shaxsiy pochtangizni qo'yasiz, ish loyihasida esa local sozlama bilan ishchi pochtani qo'yasiz:
# Uy papkangizda β global (sukut bo'yicha):
git config --global user.email "oqil.shaxsiy@gmail.com"
# Ish loyihasi ichida turib β faqat shu loyiha uchun:
git config --local user.email "oqil@kompaniya.uz"
Ish loyihasida local global'ni bosib o'tadi β o'sha loyihadagi commitlar ishchi pochta bilan imzolanadi, qolgan hamma joyda esa shaxsiy pochta ishlaydi.
π --local sozlama faqat loyiha (repozitoriy) ichida turib ishlaydi. Repozitoriydan tashqaridagi (bo'sh) papkada git config --local ... yozsangiz, Git aynan shu xatoni beradi: fatal: --local can only be used inside a git repository β chunki saqlash uchun .git papka kerak (u 3-bobda paydo bo'ladi).
π‘ Hech qaysi bayroqni yozmasangiz, Git localni nazarda tutadi (loyiha ichida bo'lsangiz). Boshlovchi uchun maslahat: shaxsiy kompyuteringizdagi umumiy sozlamalar uchun doim --global ishlating β chalkashlik kam bo'ladi.
Git config buyrug'ining anatomiyasi¶
git config buyrug'ini tez-tez ishlatamiz, shuning uchun uning qismlarini ajratib tushunaylik:
git config --global user.name "Oqil Imomnazarov"
# | | | |
# | | | +-- qiymat (value): nima yozmoqchimiz
# | | +------------ kalit (key): nimani sozlayapmiz
# | +--------------------- daraja: qaysi darajaga (--global/--local/--system)
# +------------------------------ sozlamalar buyrug'i
- Kalit ikki qismdan iborat:
bo'lim.nom(masalanuser.name,core.editor,init.defaultBranch). Nuqta β bo'lim bilan nomni ajratadi. - Qiymatsiz yozsangiz (
git config --global user.name) β Git hozirgi qiymatni o'qib chiqaradi. - Qiymat bilan yozsangiz β yangi qiymatni yozadi (eskisini almashtiradi).
Sozlamani butunlay o'chirish uchun --unset ishlatiladi:
Foydali standart sozlamalar¶
Ismni sozlab bo'ldik. Hozir bir marta qilib qo'yiladigan yana bir nechta foydali sozlamani ko'ramiz.
Default branch nomini main qilish¶
Har bir yangi loyiha bitta asosiy "shox" (branch β kodingizning asosiy yo'nalishi, 7-bobda batafsil) bilan boshlanadi. Eski Git'da bu shox master deb nomlanardi, hozir butun dunyo mainga o'tdi. GitHub ham yangi loyihalarda main ishlatadi. Ikkalasini moslab qo'yamiz:
Buni qilmasangiz, eski o'rnatishlarda yangi loyiha master bilan ochiladi va keyin GitHub bilan mos kelmay chalkashlik chiqishi mumkin. Bir marta main qilib qo'ying β tinch bo'ladi.
π Tekshirish: git config --global init.defaultBranch β main qaytishi kerak.
Matn muharririni tanlash¶
Git ba'zan sizdan matn yozishni so'raydi (masalan commit izohi). Standart holatda u eski vim muharririni ochadi β boshlovchini qo'rqitadigan dastur (undan chiqish ham alohida ilm). Agar VS Code o'rnatgan bo'lsangiz, Git'ni unga yo'naltiring:
--wait β Git VS Code'da yozib bo'lguningizni kutadi degani. VS Code yo'q bo'lsa, hozircha bu sozlamani o'tkazib yuboring β keyin ham qilsa bo'ladi.
π‘ Vim ochilib qolsa va undan chiqib ketolmasangiz: Esc tugmasini bosing, so'ng :q! deb yozib Enter bosing. Bu β "o'zgarishsiz chiqib ket" buyrug'i. Bu kichik hiyla ko'plab dasturchini qutqargan.
Windows: qatorlar tugashi (core.autocrlf)¶
Bu β faqat Windows foydalanuvchilari uchun nozik tafsilot. Windows va Linux/macOS matn fayllarida "qator tugadi" belgisini boshqacha yozadi (Windows: CRLF, boshqalari: LF). Bu jamoaviy ishda chalkashlik tug'dirishi mumkin. Git buni avtomatik to'g'rilab turishi uchun:
# Windows uchun:
git config --global core.autocrlf true
# macOS / Linux uchun:
git config --global core.autocrlf input
π Yaxshi yangilik: Windows'dagi Git installer'i core.autocrlf trueni odatda o'zi qo'yib beradi. Tekshirib ko'ring β git config --get core.autocrlf β true chiqsa, hech narsa qilish shart emas.
Sozlamalarni o'qish: git config --list¶
Hamma sozlamalaringizni bir joyda ko'rish uchun:
user.name=Oqil Imomnazarov
user.email=oqil@example.com
init.defaultbranch=main
core.autocrlf=true
core.editor=code --wait
Bu ro'yxat uch darajaning hammasini birga ko'rsatadi. Qaysi sozlama qaysi fayldan kelganini bilmoqchi bo'lsangiz, --show-origin qo'shing:
file:C:/Program Files/Git/etc/gitconfig core.autocrlf=true
file:C:/Users/Aziz/.gitconfig user.name=Oqil Imomnazarov
file:C:/Users/Aziz/.gitconfig user.email=oqil@example.com
file:.git/config user.email=oqil@kompaniya.uz
Endi har bir sozlama qaysi darajadan (system / global / local) kelayotgani ko'rinib turibdi β bu sozlamalar bir-birini bosib o'tganda chalkashlikni hal qilishda juda asqotadi.
π‘ Bitta sozlamaning amaldagi qiymatini tezda bilish uchun --get ishlating: git config --get user.email. Bu β ustuvorlik qoidasini hisobga olib, g'olib qiymatni qaytaradi.
Alias β o'zingizga qisqa buyruqlar¶
Kelajakda git status, git log, git checkout kabi buyruqlarni kuniga o'nlab marta yozasiz. Uzun buyruqlarga qisqa nom (alias β taxallus) berib qo'yish mumkin:
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.lg "log --oneline --graph --all"
Endi git status o'rniga shunchaki git st yozasiz:
git st β aynan git status kabi ishlaydi. git lg esa tarixingizni chiroyli shoxchalar bilan ko'rsatadi (log buyrug'ini 5-bobda, branch'larni 7-bobda batafsil o'rganamiz β hozir shunchaki alias mexanikasini tushunsangiz kifoya).
π Alias'lar β sof qulaylik uchun. Ular Git'ning ishlashiga ta'sir qilmaydi, faqat sizning yozuvingizni qisqartiradi. Boshqa kompyuterda alias'laringiz bo'lmaydi (chunki ular global config'ingizda), shuning uchun asl buyruqlarni ham bilib turish kerak.
π‘ Mashhur alias'lar internetda ko'p, lekin boshlovchiga maslahat: o'zingiz tez-tez yozadigan buyruqlarni alias qiling, birovning ro'yxatini ko'r-ko'rona ko'chirmang. Har bir alias β sizning real ehtiyojingizdan kelib chiqsin.
Yordam olish: git help¶
Birorta buyruqni unutib qo'ysangiz yoki uning barcha imkoniyatlarini bilmoqchi bo'lsangiz, Git'ning o'zida to'liq qo'llanma bor:
Bu brauzerda yoki terminalda shu buyruqning rasmiy hujjatini ochadi. Faqat qisqa eslatma kerak bo'lsa:
(kichik -h) β buyruqning asosiy variantlarini terminalga qisqa ro'yxat qilib chiqaradi.
π‘ "Qaysi buyruq bor edi?" deb esdan chiqarsangiz, shunchaki git help yozing β eng ko'p ishlatiladigan buyruqlar ro'yxati chiqadi. Git'ning o'zi β eng yaxshi shpargalkangiz.
Hammasini bir joyda: sozlash tekshirlist¶
Yangi kompyuterda Git'ni birinchi marta sozlayotganingizda mana shu ketma-ketlikni bajarsangiz, hamma narsa joyida bo'ladi:
# 1. O'rnatilganini tekshirish:
git --version
# 2. Kim ekaningizni aytish (MAJBURIY):
git config --global user.name "Ism Familiya"
git config --global user.email "siz@example.com"
# 3. Default branch β main:
git config --global init.defaultBranch main
# 4. Matn muharriri (VS Code bo'lsa):
git config --global core.editor "code --wait"
# 5. Tekshirish β hammasi joyidami?
git config --list
β Shu besh qadam bajarildimi β Git to'liq tayyor. Endi 3-bobda birinchi haqiqiy loyihangizni yaratamiz.
2-bob mashqlari¶
π‘ Bu mashqlarda hech narsani "buzib" qo'yishdan qo'rqmang β config sozlamalarini istalgancha o'zgartirib, qaytarib qo'yish mumkin. Eng yaxshi o'rganish β sinash.
- Terminalni oching va
git --versionyozing. Natijani o'qing: sizda Git'ning qaysi versiyasi o'rnatilgan? - Agar Git o'rnatilmagan bo'lsa, operatsion tizimingizga mos yo'l bilan o'rnating (Windows: installer yoki
winget; macOS:brew; Linux:apt/dnf). O'rnatib bo'lib, terminalni yopib qayta oching vagit --versionbilan tekshiring. - Terminalda
pwdyozib, hozir qaysi papkada turganingizni aniqlang. So'ngls(yoki Windows'dadir) bilan o'sha papkada nima borligini ko'ring. cdbuyrug'i bilan biror papka ichiga kiring,pwdbilan tekshiring, so'ngcd ..bilan orqaga qayting.git config --global user.nameyozib, hozir qanday ism qo'yilganini ko'ring. Bo'sh bo'lsa β hali sozlanmagan degani.- O'zingizning ism-familiyangizni
git config --global user.name "..."bilan sozlang. Tirnoqni unutmang. - O'zingizning elektron pochtangizni
git config --global user.email "..."bilan sozlang. Keyin ikkalasini ham o'qib, to'g'ri yozilganini tasdiqlang. git config --global init.defaultBranch mainbuyrug'ini bajaring. So'nggit config --global init.defaultBranchbilan natijani tekshiring βmainqaytdimi?git config --listyozing va chiqqan barcha sozlamalarni o'qib chiqing. Ularning har birini tanidingizmi?git config --list --show-originyozing. Qaysi sozlama qaysi fayldan (system / global / local) kelayotganini aniqlang.core.autocrlfqiymatinigit config --get core.autocrlfbilan tekshiring. Windows'datruebo'lishi kerak β agar bo'lmasa, mos qiymatga sozlang.git config --global user.name "Sinov Nomi"bilan ismni vaqtincha o'zgartiring,--listbilan tekshiring, so'ng asl ismingizni qaytarib qo'ying.git config --global --unsetbilan biror sinov sozlamasini o'chirib ko'ring (avvalgit config --global sinov.kalit "qiymat"bilan yarating, keyin o'chiring).- O'zingizga
stdegan alias yarating:git config --global alias.st status. Keyin uning config'da saqlanganinigit config --global --get alias.stbilan tasdiqlang. - Yana ikkita alias yarating:
co(checkout uchun) valg(log --oneline --graphuchun).git config --listda ularning paydo bo'lganini ko'ring. git help configyokigit config --helpbuyrug'ini ishga tushiring. Ochilgan qo'llanmadan--unsethaqida qisqa ma'lumot toping.git config -h(kichik-h) yozing va chiqqan qisqa ro'yxatnigit config --helpbilan solishtiring β farqi nimada?- VS Code o'rnatilgan bo'lsa,
git config --global core.editor "code --wait"bilan muharrirni sozlang vagit config --global core.editorbilan tekshiring. - Uy papkangizdagi
.gitconfigfaylini matn muharririda (yokigit config --list --show-originorqali manzilini topib) oching. Ichidagi yozuvlar siz terminalda kiritgan sozlamalarga mos kelishini ko'ring. - Tasavvur qiling: bir ish loyihasida boshqa email bilan commit qilmoqchisiz. Global email'ingiz qanday, va uni qaysi daraja (local) bilan, qaysi buyruq bilan faqat bitta loyiha uchun o'zgartirgan bo'lardingiz? Buyruqni qog'ozga (yoki izoh sifatida) yozib, ustuvorlik qoidasini (
local > global > system) o'z so'zlaringiz bilan tushuntiring.