Mundarija (32)
- Bu darsda
- 1. Nega bu kerak?
- 2. Uch hudud
- 2.1 Working tree — ishchi papka
- 2.2 Repository — .git papkasi
- 2.3 Staging area — keyingi commit tayyorlanadigan joy
- 2.4 Uchalasi birga
- 2.5 Nega oraliq qadam bor?
- 3. Fayl holatlari
- 3.1 Tracked va untracked
- 3.2 Kuzatiladigan faylning uch holati
- 4. git status ni o'qish
- 4.1 Toza holat
- 4.2 Yangi fayl va o'zgargan fayl
- 4.3 Staging'ga qo'shilgan fayl
- 4.4 Bitta fayl — ikki holatda
- 4.5 Qisqa format: git status -s
- 5. VS Code'da uch hudud
- 6. Ko'p uchraydigan xatolar
- 6.1 "git add — saqlash"
- 6.2 add dan keyin tahrirlab, qayta add qilmaslik
- 6.3 "Staging — faqat o'zgarganlar"
- 6.4 Untracked faylni "Git'da bor" deb o'ylash
- 6.5 .git ni o'chirish yoki ko'chirish
- 7. Mashqlar
- 1-mashq (oson): Belgini o'qing
- 2-mashq (o'rta): Holatlar ketma-ketligi
- 3-mashq (qiyin): Nima commitga tushdi?
- 4-mashq: Portfolio qadami — portfolio'ni "Git ko'zi" bilan ko'ring
- 8. Real ishda
- Xulosa
- Manbalar
Git'ning uch hududi: working tree, staging area va repository
Qisqacha: Git'da har bir fayl uch joydan birida bo'ladi. Working tree — siz tahrirlayotgan papka. Staging area (index) — keyingi commitga tayyorlangan holat. Repository (
.gitpapkasi) — saqlangan commitlar tarixi.git addfaylni working tree'dan staging'ga,git commitesa staging'dan repository'ga o'tkazadi. Hozir qaysi fayl qayerdaliginigit statusko'rsatadi.
Bu darsda
- Working tree, staging area va repository nima ekanini o'z so'zlaringiz bilan tushuntirasiz.
- Tracked va untracked, modified, staged va committed holatlarini farqlaysiz.
git statusning to'liq va qisqa (-s) natijasini o'qiy olasiz.- Bitta fayl bir vaqtda ikki holatda bo'lishi mumkinligini va bu nimaga olib kelishini bilasiz.
- VS Code'dagi Source Control panelida shu uch hududni taniysiz.
Oldin bilishingiz kerak: Versiya nazorati nima, Git'ni o'rnatish va birinchi sozlash, VS Code bilan tanishuv.
1. Nega bu kerak?
Versiya nazorati darsida commitni "loyihaning bir lahzadagi surati" dedik. Lekin qaysi lahzaning? Siz ertalabdan beri uch faylni o'zgartirdingiz: menyuga narx qo'shdingiz, CSS'da rangni tuzatdingiz va bron sahifasida tajriba qilyapsiz — u hali chala. Suratga hammasi tushishi kerakmi?
Yo'q. Tajriba surat ichida bo'lmasligi kerak. Narx va rang esa ikki xil ish — ularni alohida suratga olish yaxshi. HTML kod uslubi darsidagi maslahatni eslang: "formatlashni mazmun o'zgarishlaridan alohida qiling". Git bunga imkon beradi. Buning siri — faylning uchta "manzili".
Pochtadan posilka jo'natishni tasavvur qiling:
- Stol — narsalaringiz yoyilgan joy. Istagancha o'zgartirasiz, joyini almashtirasiz.
- Quti — jo'natiladigan narsalarni stoldan tanlab solasiz. Stoldagi hamma narsa emas, faqat tayyorlari.
- Pochta arxivi — quti muhrlanib jo'natildi. Endi u o'zgarmaydi, uning ro'yxati arxivda qoladi.
Git'dagi uch hudud aynan shunday ishlaydi. Bu darsda ularni tanib olamiz. Buyruqlarni esa keyingi darsda o'zingiz yozasiz. Hozir biz tayyorlagan «Bahor» reposidagi haqiqiy natijalarni o'qishni o'rganamiz.
2. Uch hudud
2.1 Working tree — ishchi papka
Working tree (ishchi papka, working directory) — kompyuteringizdagi loyiha papkasining o'zi: Explorer'da ko'radigan, VS Code'da tahrirlaydigan fayllaringiz. Posilka o'xshatishida — stol.
«Bahor» reposida ls shuni ko'rsatadi:
lsassets
bron
index.html
menyuOddiy papkadan hech farqi yo'q. Git bu fayllarni kuzatadi, lekin ularga o'zi tegmaydi. Siz faylni o'zgartirsangiz, o'zgarish faqat shu yerda bo'ladi — tarix hali bilmaydi.
2.2 Repository — .git papkasi
ls -a bilan yashirin fayllarni ham ko'raylik (Terminalda harakatlanish):
ls -a.
..
.git
assets
bron
index.html
menyu.git — repository (repozitoriy) ning o'zi: butun tarix, hamma commitlar, sozlamalar shu papkada. Posilka o'xshatishida — pochta arxivi. Ichiga qaraymiz:
ls .gitCOMMIT_EDITMSG
HEAD
config
description
hooks
index
info
logs
objects
refsTanish nom bor — config. Oldingi darsda local sozlama aynan shu faylga yozilgan edi. objects papkasida fayllaringizning barcha saqlangan versiyalari turadi. Qolganlarini Git ichkaridan va HEAD va refs darslarida ochamiz.
Diqqat:
.gitpapkasini qo'lda tahrirlamang va o'chirmang. U o'chsa — butun tarix ketadi, loyiha yana oddiy papkaga aylanadi. Fayllaringiz joyida qoladi, lekin birorta commit qolmaydi.
"Repo" so'zi ikki ma'noda ishlatiladi. Tor ma'noda — .git papkasi. Keng ma'noda — loyiha papkasi va uning .git i birga. Gapda qaysi biri nazarda tutilgani odatda aniq bo'ladi.
2.3 Staging area — keyingi commit tayyorlanadigan joy
Staging area (tayyorlash hududi) — keyingi commitga nima tushishini belgilaydigan joy. Uning ikkinchi nomi — index, chunki Git uni .git/index faylida saqlaydi. Yuqoridagi ro'yxatda u ham bor. Posilka o'xshatishida — quti.
Ko'p boshlovchi staging'ni "o'zgargan fayllar ro'yxati" deb o'ylaydi. Aslida u keyingi commitning to'liq loyihasi. Unda hamma kuzatilayotgan fayllar bor — o'zgarmaganlari ham. Buni git ls-files ko'rsatadi:
git ls-filesassets/css/asosiy.css
bron/index.html
index.html
menyu/index.htmlTo'rttala fayl — hozir hech biri o'zgarmagan bo'lsa ham. Commitdan keyin staging oxirgi commit bilan bir xil bo'ladi. Siz git add qilgan fayl uning ichidagi eski versiyani yangisi bilan almashtiradi. git commit esa shu "qutini" butunligicha muhrlaydi.
2.4 Uchalasi birga
flowchart LR
W["Working tree<br/>(papka)"] -- "git add" --> S["Staging area<br/>(index)"]
S -- "git commit" --> R[("Repository<br/>(.git)")]
R -. "git switch,<br/>git restore" .-> WNimaga qarang: fayl chapdan o'ngga ikki qadamda o'tadi — avval git add, keyin git commit. Punktir o'q — teskari yo'l: repository'dagi versiyani ishchi papkaga qaytarish. Uni Xatoni tuzatish va Branch darslarida o'rganamiz.
Muhim nuqta: staging area ham, repository ham .git papkasi ichida. Explorer'da ko'rinadigan yagona hudud — working tree.
2.5 Nega oraliq qadam bor?
Ko'p versiya nazorati tizimlarida staging yo'q: "commit" buyrug'i papkadagi hamma o'zgarishni birdaniga saqlaydi. Git ataylab bitta qadam qo'shgan. Birinchi qarashda bu ortiqcha ishdek tuyuladi — ikki buyruq o'rniga bitta bo'lsa-chi?
Oraliq qadam sizga uchta imkon beradi:
- Tanlash. O'n fayl o'zgargan bo'lsa ham, commitga faqat tayyor uchtasini yuborasiz. Chala tajriba stolda qoladi.
- Bo'lish. Bir kunlik ishni bir nechta mantiqiy commitga ajratasiz: "Menyu: narxlarni yangila" alohida, "CSS: rangni tuzat" alohida. Tarix o'qilishi oson bo'ladi.
- Oxirgi tekshiruv. Qutini muhrlashdan oldin ichiga qaraysiz: nima ketayotganini
git statusvagit diff --stagedko'rsatadi. Ikkinchisini O'zgarishlarni ko'rish darsida o'rganamiz.
Shoshilganda staging'ni chetlab o'tish yo'li ham bor — git commit -a. U kuzatilayotgan fayllarning hammasini o'zi qutiga soladi. Uni keyingi darsda ko'rasiz, cheklovi bilan birga.
Tekshirib ko'ring: Posilka o'xshatishida
git addvagit commitnimaga to'g'ri keladi?
Javob
git add — narsani stoldan olib qutiga solish (working tree → staging). git commit — qutini muhrlab jo'natish va arxivga yozish (staging → repository). Qutiga solingan narsani commitgacha almashtirish mumkin, muhrlangan qutini esa — yo'q.
3. Fayl holatlari
3.1 Tracked va untracked
Git nuqtai nazaridan papkadagi har fayl ikki toifaning biriga kiradi:
- Tracked (kuzatiladigan) — Git tanigan fayl: u oxirgi commitda bor yoki staging'ga qo'shilgan. Git uning har bir o'zgarishini sezadi.
- Untracked (kuzatilmaydigan) — papkada bor, lekin Git uni hali "o'zimniki" demaydi. Yangi yaratilgan fayl doim shunday boshlanadi.
Untracked faylni Git saqlamaydi. U o'chib ketsa, Git qaytarib bera olmaydi. Faylni kuzatuvga olish uchun uni bir marta git add qilish kerak.
3.2 Kuzatiladigan faylning uch holati
Tracked fayl o'z navbatida uch holatdan birida bo'ladi:
| Holat | Ma'nosi | Posilkada |
|---|---|---|
| unmodified (o'zgarmagan) | Oxirgi commit bilan bir xil | Arxivdagi bilan bir xil |
| modified (o'zgargan) | Papkada o'zgargan, staging'da hali eski | Stolda, qutiga solinmagan |
| staged (tayyorlangan) | Yangi versiyasi staging'da | Qutida, muhrlanmagan |
Commitdan keyin staged fayl yana unmodified bo'ladi — endi u tarixda saqlangan (committed). Faylning "hayot sikli" shunday:
stateDiagram-v2
[*] --> Untracked: yangi fayl
Untracked --> Staged: git add
Unmodified --> Modified: tahrirlash
Modified --> Staged: git add
Staged --> Unmodified: git commitNimaga qarang: sikl aylana bo'ylab yuradi — tahrirlaysiz, add qilasiz, commit qilasiz va yana boshidan. Untracked'dan kirish faqat bitta — git add orqali.
Tekshirib ko'ring: Siz
aloqa/index.htmlfaylini yaratdingiz va unga matn yozdingiz, lekin Git'ga hech narsa demadingiz. Kompyuter o'chib qolib, fayl buzildi. Git uni tiklay oladimi?
Javob
Yo'q. Fayl untracked edi — Git uni hech qachon saqlamagan. Tarixda faqat commit qilingan narsa bor. Tiklash imkoniyati kerak bo'lsa, faylni add va commit qilish kerak.
4. git status ni o'qish
git status — "hozir qaysi fayl qaysi hududda?" savoliga javob. Uni tez-tez yozish odati — Git'dagi eng foydali odat. Endi uni «Bahor» reposida turli holatlarda ko'ramiz.
4.1 Toza holat
Hamma narsa commit qilingan, hech narsa o'zgarmagan:
git statusOn branch main
nothing to commit, working tree cleanTarjimasi: "main branch'dasiz. Commit qiladigan narsa yo'q, ishchi papka toza". Uchala hudud bir xil holatda.
4.2 Yangi fayl va o'zgargan fayl
Endi ikki ish qildik: yangi aloqa/ papkasini yaratdik va menyuga osh narxini qo'shdik:
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: menyu/index.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
aloqa/
no changes added to commit (use "git add" and/or "git commit -a")Ikki bo'lim chiqdi:
Changes not staged for commit— "commitga tayyorlanmagan o'zgarishlar".modified: menyu/index.html— fayl tracked, papkada o'zgargan, lekin staging'da hali eski versiya. Posilkada — stolda.Untracked files— "kuzatilmaydigan fayllar". Yangi papka ichidagi fayllar bilan birga butunligicha ko'rsatiladi:aloqa/.
Qavs ichidagi qatorlar — maslahatlar: git add qo'shadi, git restore o'zgarishni bekor qiladi. Oxirgi qator: "commitga hech narsa qo'shilmagan". Git'ning maslahatlari doim shunday tuzilgan — ularni o'qish odat bo'lsin.
4.3 Staging'ga qo'shilgan fayl
Menyuni git add qildik:
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: menyu/index.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
aloqa/
Menyu yangi bo'limga ko'chdi: Changes to be committed — "commit qilinadigan o'zgarishlar". Posilkada — qutida. Maslahat ham o'zgardi: git restore --staged — faylni qutidan olib, stolga qaytarish (unstage). aloqa/ esa joyida — biz unga tegmadik.
4.4 Bitta fayl — ikki holatda
Endi eng qiziq holat. Menyu staging'da turibdi. Biz uni yana tahrirladik — manti narxini qo'shdik:
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: menyu/index.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: menyu/index.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
aloqa/
menyu/index.html ikki bo'limda birdaniga! Xato emas. Faylning ikki versiyasi bor: biri qutida, biri stolda. Ularni alohida ko'ramiz. Staging'dagi versiyani git show :fayl ko'rsatadi (ikki nuqta — "staging'dagi"):
git show :menyu/index.html<h1>Menyu</h1>
<p>Osh — 35 000 so'm</p>Papkadagi versiya esa:
cat menyu/index.html<h1>Menyu</h1>
<p>Osh — 35 000 so'm</p>
<p>Manti — 30 000 so'm</p>Staging'da ikki qator, papkada — uch. Hozir commit qilsak, qaysi biri saqlanadi? Sinab ko'ramiz:
git commit -m "Menyu: osh narxini qo'sh"[main f4238e7] Menyu: osh narxini qo'sh
1 file changed, 1 insertion(+)1 insertion(+) — bitta qator qo'shildi. Commitga faqat staging'dagi versiya tushdi. Commitdagi faylni git show HEAD:fayl bilan tekshiramiz (HEAD — "oxirgi commit", batafsil HEAD va refs darsida):
git show HEAD:menyu/index.html<h1>Menyu</h1>
<p>Osh — 35 000 so'm</p>Manti qatori commitga tushmadi — u hali ham papkada, o'zgargan holatda kutib turibdi. Qoida: commit staging'ni saqlaydi, papkani emas. git add qilgandan keyin faylni yana o'zgartirsangiz, yangi o'zgarishni ham qaytadan add qilish kerak.
Tekshirib ko'ring: Ali
style.cssnigit addqildi, keyin unga yana bitta qoida yozdi va darholgit commit -m "CSS: rangni tuzat"qildi. Yangi qoida commitga tushadimi?
Javob
Yo'q. Commit staging'dagi versiyani saqladi — add paytidagi holatni. Keyin yozilgan qoida faqat papkada. git status uni modified deb ko'rsatadi. Uni saqlash uchun yana git add style.css va yangi commit kerak.
4.5 Qisqa format: git status -s
To'liq natija uzun. -s (short) flagi har faylni bitta qatorda ko'rsatadi. Yuqoridagi uch holat qisqa formatda:
M menyu/index.html
?? aloqa/M menyu/index.html
?? aloqa/MM menyu/index.html
?? aloqa/Qator boshida ikki ustun bor. Chap ustun — staging'dagi holat, o'ng ustun — papkadagi holat. Bo'sh joy — "o'zgarish yo'q":
| Belgi | Chap (staging) | O'ng (papka) |
|---|---|---|
M |
— | o'zgargan, tayyorlanmagan |
M |
o'zgargan va tayyorlangan | — |
MM |
tayyorlangan | yana o'zgargan |
?? |
kuzatilmaydi | kuzatilmaydi |
Yana ikkita tez-tez uchraydigan belgi bor. A (added) — yangi fayl staging'ga qo'shilgan. D (deleted) — fayl o'chirilgan. Masalan, bron/index.html ni oddiy rm bilan o'chirsak:
D bron/index.html
M menyu/index.html
?? aloqa/ D — o'ng ustunda: fayl papkadan o'chdi, lekin staging'da va oxirgi commitda hali bor. Shuning uchun Git uni hali ham qaytarib bera oladi — Xatoni tuzatish darsida ko'rasiz.
Maslahat: Ikki ustunni eslab qolish uchun: chap — quti, o'ng — stol. Harf qaysi ustunda tursa, o'zgarish o'sha joyda.
5. VS Code'da uch hudud
VS Code bilan tanishuv darsida chap paneldagi Source Control belgisini ko'rgan edik (Ctrl + Shift + G) va "uni Git qismida ochamiz" degan edik. Endi vaqti keldi.
Source Control paneli git status ning grafik ko'rinishi:
- Changes — working tree'dagi o'zgarishlar (
git statusdagiChanges not stagedvaUntracked). - Staged Changes — staging area (
Changes to be committed). - Fayl yonidagi harf:
U— untracked,M— modified,A— added,D— deleted. - Fayl ustiga kelganda chiqadigan
+belgisi —git add. Tepadagi xabar maydoni va Commit tugmasi —git commit.
MM holatida VS Code faylni ikkala ro'yxatda ham ko'rsatadi — xuddi git status kabi. Terminal va panel bir xil narsani ko'rsatadi, chunki ikkalasi ham bitta .git papkasini o'qiydi. Kursda asosan terminalni ishlatamiz: u hamma joyda — serverda ham, boshqa muharrirda ham bir xil. Panel esa ko'z bilan tez tekshirish uchun qulay.
6. Ko'p uchraydigan xatolar
6.1 "git add — saqlash"
git add hech narsani tarixga yozmaydi. U faqat qutiga soladi. Kompyuter shu yerda o'chsa, tarixda hech narsa yo'q. Saqlash — faqat git commit.
6.2 add dan keyin tahrirlab, qayta add qilmaslik
«Bitta fayl — ikki holatda» bo'limidagi manti voqeasi. Belgisi: commitdan keyin git status -s da fayl yana M bo'lib turadi. Tuzatish: commitdan oldin git status ga qarang. MM ko'rsangiz — yana git add.
6.3 "Staging — faqat o'zgarganlar"
Staging keyingi commitning to'liq holati. Shuning uchun git commit hech qachon "boshqa fayllarni yo'qotib qo'ymaydi": qutiga solinmagan fayllar commitda oldingi versiyasida qoladi.
6.4 Untracked faylni "Git'da bor" deb o'ylash
Untracked fayl Git himoyasida emas. Uni o'chirsangiz — tamom. git status dagi ?? belgisi "bu fayl hali tarixda yo'q" degani.
6.5 .git ni o'chirish yoki ko'chirish
Loyihani boshqa joyga ko'chirganda .git ham birga ketishi kerak — u yashirin, shuning uchun Explorer'da ko'rinmay qolishi mumkin. "Keraksiz papka" deb uni o'chirish esa butun tarixni o'chiradi.
7. Mashqlar
1-mashq (oson): Belgini o'qing
git status -s shuni chiqardi. Har bir fayl qaysi hududda va qanday holatda?
M assets/css/asosiy.css
M index.html
MM menyu/index.html
?? bron/rahmat.htmlIshora: «Qisqa format» bo'limidagi jadval — chap ustun quti, o'ng ustun stol.
Yechim
asosiy.css—M(chapda): o'zgargan va staging'ga qo'shilgan. Commitga tushadi.index.html—M(o'ngda): papkada o'zgargan, staging'ga qo'shilmagan. Commitga tushmaydi.menyu/index.html—MM: bir versiyasi staging'da, keyin yana o'zgargan. Commitga faqat staging'dagisi tushadi.bron/rahmat.html—??: untracked, yangi fayl. Git uni umuman saqlamaydi.
2-mashq (o'rta): Holatlar ketma-ketligi
Toza repoda quyidagilar bajarildi. Har qadamdan keyin menyu/index.html qaysi holatda? Javobni bitta so'z bilan yozing: modified, staged yoki unmodified. Fayl ikki holatda bo'lsa — MM.
- Faylga narx qo'shildi:
git add menyu/index.html:- Faylga yana bir qator qo'shildi:
git commit -m "Menyu: narx qo'sh":
Keyin har qadam uchun git status -s qanday ko'rinishini ham yozing.
Ishora: «Bitta fayl — ikki holatda» bo'limida xuddi shu ketma-ketlik bor.
Yechim
- modified,
M— papkada o'zgargan, staging'da eski. - staged,
M— o'zgarish qutiga solindi. - MM — qutida bitta versiya, papkada — yangiroq.
- modified,
M— commit qutidagini saqladi. Uchinchi qadamdagi qator hali papkada, staging'da esa commitdagi versiya. Ular farq qiladi — o'ng ustundaM.
3-mashq (qiyin): Nima commitga tushdi?
Rustam aka bron/index.html bilan shunday ishladi:
- Fayl oxiriga
<p>Telefon: +998 90 000 00 00</p>yozdi vagit addqildi. - Keyin shu qatordagi raqamni noto'g'ri deb o'chirdi va
<p>Telefon: tez orada</p>yozdi. git commit -m "Bron: telefon raqamini qo'sh"qildi.
Savollar: commitda qaysi matn bor? Saytni ochgan mehmon (papkadagi faylni ko'radigan brauzer) nimani ko'radi? git status -s nima deydi? Hammasini to'g'rilash uchun nima qilish kerak?
Ishora: «Bitta fayl — ikki holatda» bo'limidagi qoida: commit staging'ni saqlaydi, papkani emas.
Yechim
- Commitda:
<p>Telefon: +998 90 000 00 00</p>— 1-qadamdagiaddpaytidagi versiya. - Papkada (brauzerda):
<p>Telefon: tez orada</p>— oxirgi tahrir. git status -s:M bron/index.html— papkadagi versiya commitdagidan farq qiladi.- Tuzatish:
git add bron/index.htmlva yangi commit, masalangit commit -m "Bron: telefonni vaqtincha yashir". Oxirgi commitning o'zini tuzatish yo'li ham bor — Xatoni tuzatish darsida.
Xulosa: tarix va papka bir-biridan farq qilib qoldi. Commitdan oldin git status ga bir qarash buni oldini olardi.
4-mashq: Portfolio qadami — portfolio'ni "Git ko'zi" bilan ko'ring
Keyingi darsda portfolio'ingiz repo bo'ladi. Oldindan tekshiramiz.
- Git Bash'da portfolio papkangizga o'ting (masalan
cd ~/kurs/portfolio) vagit statusyozing. Qanday xabar chiqdi va nega? ls -abilan papkadagi hamma narsani ko'ring.git initdan keyin qaysilari untracked bo'lib chiqishini oldindan yozing.- Ular orasida qaysi biri hech qachon commitga tushmasligi kerak? Nega?
Ishora: xabarni Versiya nazorati darsining "Ko'p uchraydigan xatolar" bo'limida ko'rgansiz. node_modules/ haqida — Fayl qidirish darsidagi .gitignore bo'limi.
Yechim
- Natija:
fatal: not a git repository (or any of the parent directories): .gitPortfolio hali repo emas: na o'zida, na ota papkalarida .git yo'q. Agar boshqa xabar chiqsa (masalan On branch ...), demak ota papkalardan biri — masalan kurs/ yoki uy papkangiz — allaqachon repo. Bu xavfli holat, keyingi darsning "Ko'p uchraydigan xatolar" bo'limida uni tuzatamiz.
Portfolio'da odatda shular bor:
sayt/,package.json,package-lock.json,node_modules/,.prettierrc,.htmlvalidate.json,.htmlvalidateignore,.stylelintrc.jsonva, ehtimol,asosiy-eski.css.git initdan keyin hammasi untracked (??) bo'ladi — Git hali birortasini tanimaydi.node_modules/. Unda npm yuklagan minglab fayl bor. Ularnipackage.jsonvapackage-lock.jsonbo'yicha istalgan paytnpm installqayta yaratadi. Repoga tushsa, u keraksiz og'irlashadi. Keyingi darsda uni bir qatorlik.gitignorebilan chetlab o'tamiz.
8. Real ishda
- Toza commitlar. Tajribali dasturchi o'zgarishlarini bir necha mantiqiy commitga bo'ladi: staging'ga bir guruh fayl, commit, keyin keyingi guruh. Bu review'ni osonlashtiradi. Fayl ichidagi bo'laklarni ham alohida tanlash mumkin — Yaxshi commit darsida.
git statusodati. Har commitdan oldin vagit add .dan keyingit statusyozish — tajribali jamoalardagi odat. U tasodifan.env(parollar) yoki katta faylni commitga qo'shib yuborishdan saqlaydi.- Asboblar. VS Code, JetBrains IDE'lari, GitHub Desktop — hammasi shu uch hududni ko'rsatadi, faqat nomlari biroz boshqacha. Tushunchani bilsangiz, istalgan asbobda adashmaysiz.
- Intervyuda so'raladi: "Staging area nima uchun kerak?", "
git addvagit commitfarqi?" Posilka o'xshatishi bilan javob bersangiz, tushunganingiz darhol ko'rinadi.
Xulosa
- Working tree — siz tahrirlaydigan papka; staging area (index) — keyingi commitning to'liq loyihasi; repository —
.gitpapkasidagi tarix. git add— papkadan staging'ga,git commit— staging'dan repository'ga.- Fayl untracked yoki tracked bo'ladi; tracked fayl unmodified, modified yoki staged holatda.
- Commit staging'ni saqlaydi, papkani emas:
adddan keyingi tahrir qaytadanaddqilinadi. git status -s: chap ustun — staging, o'ng ustun — papka.
Keyingi dars: Birinchi repo: init, status, add, commit — shu uch hududni o'zingiz ishlatib, birinchi commitlaringizni qilasiz va portfolio'ni Git'ga topshirasiz.
Manbalar
- Pro Git kitobi: "What is Git?" (The Three States) va "Recording Changes to the Repository" — git-scm.com/book
- Git hujjati: "git-status" (Short Format) — git-scm.com/docs/git-status
- VS Code hujjati: "Source Control" — code.visualstudio.com/docs/sourcecontrol/overview
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!