Vibecoding · 13-dars · 9-sinf (Junior Vibecoder)
Fan: Vibecoding · Muhandislik jarayoni Kohorta: 9-sinf Junior Vibecoder Hafta: 3 (1-soat)

Git va GitHub: Kod Tarixini Boshqarish

11-darsda siz VS Code o'rnatdingiz, 12-darsda xatolarni topishni o'rgandingiz. Lekin hali bitta jiddiy muammo qoldi: kod o'zgaradi, va eski versiya yo'qoladi. Bugun siz professional dasturchilar 20 yildan beri ishlatadigan vositani o'rganasiz — Git. Bu shunchaki "saqlash" emas: bu parallel ish, orqaga qaytish va jamoaviy dasturlash imkoniyati.

Tanish holat

loyiha_final_v2_FINAL_oxirgi(1).html

Nima uchun bu ishlamaydi

  • Qaysi biri oxirgisi? Fayl sanasi yolg'on gapiradi — siz uni tasodifan ochib, saqlab yuborgansiz.
  • Nima o'zgardi? Ikki fayl orasidagi farqni topish uchun ularni yonma-yon o'qib chiqish kerak.
  • Nega o'zgardi? Bu ma'lumot hech qayerda saqlanmagan.
  • Ikki kishi birga ishlasa? Fayllarni qo'lda birlashtirish — va kimningdir ishi yo'qoladi.

Git nima beradi

  • Bitta fayl — va uning butun tarixi yonida saqlanadi.
  • Har bir o'zgarish uchun kim, qachon, nima va nega yozilgan.
  • Istalgan eski holatga bir buyruq bilan qaytish mumkin.
  • Ikki kishi bir vaqtda ishlaydi, Git ishni o'zi birlashtiradi.
Kelib chiqish tarixi · 2005-yil

Git'ni kim yaratgan? Linus Torvalds va 2005-yilgi chaqiruv

Linux inqirozi: nega eski tizimlar yaroqsiz bo'ldi

  • BitKeeper mojarosi (2005): Linux yadrosini minglab dasturchilar yaratayotgan edi. Ular foydalangan xususiy BitKeeper tizimi bepul litsenziyani bekor qildi.
  • Mavjud tizimlar yaroqsiz edi: CVS va SVN markazlashgan, sekin va internetga qaram edi. Minglab o'zgarishlar oqimiga dosh berolmasdi.
  • Linus Torvaldsning qarori: "Agar mos vosita bo'lmasa, uni o'zim yarataman". U Linux ishlarini vaqtincha to'xtatib, Git ustida ishlashga kirishdi.

Dasturlash dunyosini o'zgartirgan 10 kun

  • 10 kunda noldan C tilida: Linus Git'ning yadro arxitekturasini 10 kunda yozib chiqdi va darhol Linux yadrosini boshqarishga topshirdi.
  • Taqsimlangan (Distributed): Markaziy server shart emas. Har bir dasturchining noutbukida butun loyihaning 100% tarixi to'liq saqlanadi.
  • Kriptografik muhr (SHA-1): Har bir commit va fayl xesh bilan imzolanadi — tarixni yashirincha o'zgartirish yoki soxtalashtirish imkonsiz.

Nega aynan "Git"? Muhandislik tarixi

Linus Torvalds o'ziga xos muhandislik hazili bilan shunday degan: "Men barcha loyihalarimni o'z nomim bilan atayman: avval Linux, endi esa Git" (inglizcha so'zlashuvda git — "o'jar, murosasiz odam" degan ma'noni anglatadi). Bugun Git butun dunyodagi 100 milliondan ortiq dasturchilar, Google, Microsoft, Meta va xalqaro kosmik stansiyalar kodlarini boshqaruvchi global standartdir.

Git aslida nima

Git — bu "farqlar" emas, bu suratlar zanjiri

Keng tarqalgan noto'g'ri tasavvur

Ko'pchilik Git faqat o'zgargan qatorlarni saqlaydi deb o'ylaydi. Aslida har bir commit — loyihaning to'liq surati (snapshot). O'zgarmagan fayllar uchun Git yangi nusxa yaratmaydi, balki oldingi nusxaga ishora qoldiradi — shuning uchun tarix joy egallamaydi.

Har commitda nima saqlanadi

commit a3f9c21
├─ muallif:  Aziz <aziz@mail.uz>
├─ sana:     2026-09-21 14:32
├─ xabar:    "Navbar mobil ekranda tuzatildi"
├─ ota:      7b2e440   <- oldingi commit
└─ surat:    index.html, style.css, app.js

// a3f9c21 — commit ning noyob identifikatori (hash)

Ota-bola zanjiri eng muhim g'oya

Har commit o'zidan oldingisini eslab turadi. Shu zanjir orqali Git butun tarixni tiklay oladi. Branch va merge ham aynan shu zanjir ustida qurilgan — buni tushunsangiz, qolgan hammasi oson.

add va commit nima qiladi

Fayl commitgacha uchta zonadan o'tadi

1 · Working Directory

Sizning papkangiz. Siz shu yerda tahrirlaysiz. Git o'zgarishni ko'radi, lekin hali eslab qolmaydi.

2 · Staging Area

git add dan keyingi holat. Bu tayyorlangan o'zgarishlar ro'yxati — commitga nima kirishini siz tanlaysiz.

3 · Repository

git commit dan keyin. O'zgarish tarixga yozildi va endi yo'qolmaydi.

Nega staging kerak? Bu ortiqcha qadamdek tuyuladi

# Siz uchta faylni tahrirladingiz, lekin ular
# ikki xil vazifaga tegishli:

git add style.css navbar.html
git commit -m "Navbar dizayni tuzatildi"

git add api.js
git commit -m "API xatosi tuzatildi"

# Ikkita toza commit. Staging bo'lmasa
# hammasi bitta chalkash commitga tushardi.
Kelajakdagi o'zingizga xat

Yaxshi commit xabari nega ga javob beradi

❌ Foydasiz xabarlar

"fix"
"update"
"ishladi"
"asdfgh"
"o'zgartirishlar"
"final version"

// Uch oydan keyin bu xabarlar
// hech narsa anglatmaydi.

✅ Foydali xabarlar

"Navbar mobil ekranda ustma-ust
 tushishi tuzatildi"

"Valyuta API javobi bo'sh kelganda
 xato xabari qo'shildi"

"Parol maydoniga minimal uzunlik
 tekshiruvi qo'shildi"

// Nima va nega — ikkalasi ham bor.

Sanoat standarti: Conventional Commits

feat:     yangi imkoniyat qo'shildi
fix:      xato tuzatildi
docs:     hujjat o'zgardi
style:    formatlash, mantiq o'zgarmadi
refactor: kod qayta yozildi, xulq o'zgarmadi

fix: valyuta konverterida nol bo'lish xatosi
feat: qorong'i mavzu tugmasi qo'shildi
Parallel ish

Branch — bu nusxa emas, bu ko'rsatkich

Nega branch arzon

Branch — bu papkaning nusxasi emas. Bu shunchaki bitta commitga ishora qiluvchi nom — 40 belgidan iborat faylcha. Shuning uchun branch yaratish bir zumda bo'ladi va joy egallamaydi. Professional loyihalarda kuniga o'nlab branch yaratiladi.

Asosiy buyruqlar

git branch                 # ro'yxat
git switch -c yangi-dizayn # yaratish + o'tish
git switch main            # qaytish

# Eski uslub (hali ham ishlaydi):
git checkout -b yangi-dizayn
git checkout main

Nega alohida branchda ishlash kerak

  • main har doim ishlaydigan holatda qoladi — uni istalgan payt ko'rsatish yoki deploy qilish mumkin.
  • Tajriba muvaffaqiyatsiz chiqsa — branchni o'chirasiz, xolos. Hech narsa buzilmaydi.
  • Ikki kishi ikki branchda bir vaqtda ishlaydi va bir-biriga xalaqit bermaydi.
Ikki tarixni birlashtirish

Merge — Git ikki zanjirni bitta qilib bog'laydi

Ikki xil merge

  • Fast-forward: main o'zgarmagan bo'lsa, Git shunchaki ko'rsatkichni oldinga suradi. Yangi commit yaratilmaydi.
  • Merge commit: ikkala branch ham o'zgargan bo'lsa, Git ikkita otasi bor maxsus commit yaratadi.

Buyruqlar ketma-ketligi

# 1. Qabul qiluvchi branchga o'tish
git switch main

# 2. Ishni olib kelish
git merge yangi-dizayn

# 3. Kerak bo'lmasa branchni o'chirish
git branch -d yangi-dizayn

Git qanday hal qiladi

Git ikkala branchning umumiy ajdodini (merge base) topadi va undan keyin nima o'zgarganini ikkala tomonda solishtiradi. Turli fayllar yoki turli qatorlar o'zgargan bo'lsa — Git hammasini avtomatik birlashtiradi va siz hech narsa qilmaysiz. Muammo faqat bitta holatda tug'iladi — keyingi slaydda.

Eng ko'p qo'rqitadigan narsa

Merge konflikti — bu xato emas, bu savol

Konflikt qachon yuzaga keladi

Faqat bitta holatda: ikkala branchda aynan bir xil qator boshqacha o'zgartirilgan. Git ikkalasidan qaysi biri to'g'ri ekanini bila olmaydi — bu mazmunga oid qaror, va uni faqat inson qabul qila oladi. Shuning uchun Git to'xtaydi va sizdan so'raydi.

Faylda nima ko'rinadi

<<<<<<< HEAD
<h1>Mening Portfoliom</h1>
=======
<h1>Aziz Karimov — Dasturchi</h1>
>>>>>>> yangi-dizayn

// HEAD          = siz turgan branch (main)
// yangi-dizayn  = olib kelinayotgan branch
// ======= belgisi ikkisini ajratadi

Yechish tartibi — to'rt qadam

  • Faylni oching va ikkala variantni o'qing.
  • Qaysi biri to'g'ri ekanini hal qiling — yoki ikkalasini birlashtirib yangi variant yozing.
  • Uchala belgi qatorini o'chiring: <<<, ===, >>>.
  • git add va git commit — konflikt yopildi.
Lokaldan bulutga

Git — kompyuteringizda. GitHub — internetda.

Nima farqi bor

  • Git — dastur. U internetsiz, butunlay sizning kompyuteringizda ishlaydi.
  • GitHub — sayt. U Git repozitoriyalarini saqlaydi va ulashish imkonini beradi.
  • GitHub o'rnini GitLab yoki Bitbucket ham bosa oladi — Git bitta.
  • Sizning GitHub profilingiz — bu portfolio. Ish beruvchilar va universitetlar unga qaraydi.

To'rtta buyruq

git clone <url>   # birinchi marta yuklab olish
git push          # o'z commitlaringizni yuborish
git pull          # boshqalarnikini olish
git status        # hozir nima bo'layotganini ko'rish

# Oltin qoida:
# ishni boshlashdan oldin HAR DOIM git pull
Laboratoriya · 11 daqiqa

Git simulyatori: lab/index.html ni oching

1 · Birinchi commit

Faylni tahrirlang, git add va git commit bajaring. Grafda yangi tugun paydo bo'lishini kuzating.

2 · Branch

git switch -c yangi-dizayn bilan branch yarating va u yerda 2 ta commit qiling. Graf ikkiga bo'linadi.

3 · Konflikt

Ikkala branchda ham 1-qatorni o'zgartiring, keyin merge qiling. Konflikt chiqadi — uni yeching.

4 · Tarix

git log bilan butun tarixni ko'ring va varaqaga commitlar sonini hamda oxirgi hash ni yozing.

Simulyator haqiqiy Git buyruqlarini qabul qiladi

Siz yozgan buyruqlar — haqiqiy Git sintaksisi. Shuning uchun bugungi mashq keyinchalik terminalda to'g'ridan-to'g'ri ishlaydi. Simulyator xato buyruqqa Git ning haqiqiy xato xabarini beradi.

Tayyor promptlar

AI bilan Git — lekin ehtiyot bo'ling

Nusxa oling

1) Объясни разницу между git merge и
   git rebase простыми словами, с примером
   на графе коммитов.

2) Я случайно сделал commit не в ту ветку.
   Как перенести последний коммит в другую
   ветку, ничего не потеряв? Объясни
   каждую команду перед выполнением.

3) Напиши сообщение коммита в формате
   Conventional Commits для: "исправил
   деление на ноль в конвертере валют".

🛑 Git bilan AI: xavfsizlik qoidasi

  • AI ba'zan --force, reset --hard yoki clean -fd taklif qiladi. Bu buyruqlar ishni qaytarib bo'lmas darajada o'chiradi.
  • Qoida: tushunmagan Git buyrug'ini bajarmang. Avval "что делает эта команда и что я потеряю?" deb so'rang.
  • git status — xavfsiz, u hech narsani o'zgartirmaydi. Shubhalansangiz — avval shuni yozing.
Uy vazifasi va baholash

Uy vazifasi: Git jurnali va konflikt hisoboti (10 ball)

Nima qilish kerak

  • Varaqadagi 4 bosqich jadvalini to'ldiring.
  • 3 ta yaxshi commit xabari yozing — Conventional Commits formatida, o'z loyihangiz uchun.
  • Konfliktni qanday yechganingizni tushuntiring: qaysi variantni tanladingiz va nega.
  • Uchta zonani (Working / Staging / Repository) o'z so'zingiz bilan tavsiflang.

Baholash mezoni

  • 4 bosqich jadvali — 3 ball
  • 3 ta commit xabari — 3 ball
  • Konflikt yechimi va sababi — 2 ball
  • Uchta zona tavsifi — 2 ball
Target International SchoolTarget International School Введение 1 / 1 0–3