IlmHamroh
JavaScript Full-stack/7-qism. Git va GitHub asoslari3/36-dars16 daqiqa
Mundarija (32)

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 (.git papkasi) — saqlangan commitlar tarixi. git add faylni working tree'dan staging'ga, git commit esa staging'dan repository'ga o'tkazadi. Hozir qaysi fayl qayerdaligini git status ko'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 status ning 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:

bash
ls
text
assets
bron
index.html
menyu

Oddiy 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):

bash
ls -a
text
.
..
.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:

bash
ls .git
text
COMMIT_EDITMSG
HEAD
config
description
hooks
index
info
logs
objects
refs

Tanish 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: .git papkasini 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:

bash
git ls-files
text
assets/css/asosiy.css
bron/index.html
index.html
menyu/index.html

To'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" .-> W

Nimaga 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 status va git diff --staged ko'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 add va git commit nimaga 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 commit

Nimaga 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.html faylini 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:

bash
git status
text
On branch main
nothing to commit, working tree clean

Tarjimasi: "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:

text
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:

text
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:

text
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"):

bash
git show :menyu/index.html
text
<h1>Menyu</h1>
<p>Osh — 35 000 so'm</p>

Papkadagi versiya esa:

bash
cat menyu/index.html
text
<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:

bash
git commit -m "Menyu: osh narxini qo'sh"
text
[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):

bash
git show HEAD:menyu/index.html
text
<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.css ni git add qildi, keyin unga yana bitta qoida yozdi va darhol git 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:

text
 M menyu/index.html
?? aloqa/
text
M  menyu/index.html
?? aloqa/
text
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:

text
 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 status dagi Changes not staged va Untracked).
  • 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?

text
M  assets/css/asosiy.css
 M index.html
MM menyu/index.html
?? bron/rahmat.html

Ishora: «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.

  1. Faylga narx qo'shildi:
  2. git add menyu/index.html:
  3. Faylga yana bir qator qo'shildi:
  4. 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
  1. modified, M — papkada o'zgargan, staging'da eski.
  2. staged, M — o'zgarish qutiga solindi.
  3. MM — qutida bitta versiya, papkada — yangiroq.
  4. modified, M — commit qutidagini saqladi. Uchinchi qadamdagi qator hali papkada, staging'da esa commitdagi versiya. Ular farq qiladi — o'ng ustunda M.

3-mashq (qiyin): Nima commitga tushdi?

Rustam aka bron/index.html bilan shunday ishladi:

  1. Fayl oxiriga <p>Telefon: +998 90 000 00 00</p> yozdi va git add qildi.
  2. Keyin shu qatordagi raqamni noto'g'ri deb o'chirdi va <p>Telefon: tez orada</p> yozdi.
  3. 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-qadamdagi add paytidagi 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.html va yangi commit, masalan git 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.

  1. Git Bash'da portfolio papkangizga o'ting (masalan cd ~/kurs/portfolio) va git status yozing. Qanday xabar chiqdi va nega?
  2. ls -a bilan papkadagi hamma narsani ko'ring. git init dan keyin qaysilari untracked bo'lib chiqishini oldindan yozing.
  3. 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
  1. Natija:
text
fatal: not a git repository (or any of the parent directories): .git

Portfolio 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.

  1. Portfolio'da odatda shular bor: sayt/, package.json, package-lock.json, node_modules/, .prettierrc, .htmlvalidate.json, .htmlvalidateignore, .stylelintrc.json va, ehtimol, asosiy-eski.css. git init dan keyin hammasi untracked (??) bo'ladi — Git hali birortasini tanimaydi.

  2. node_modules/. Unda npm yuklagan minglab fayl bor. Ularni package.json va package-lock.json bo'yicha istalgan payt npm install qayta yaratadi. Repoga tushsa, u keraksiz og'irlashadi. Keyingi darsda uni bir qatorlik .gitignore bilan 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 status odati. Har commitdan oldin va git add . dan keyin git status yozish — 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 add va git commit farqi?" 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 — .git papkasidagi 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: add dan keyingi tahrir qaytadan add qilinadi.
  • 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
Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
Git'ning uch hududi: working tree, staging area va repository — IlmHamroh