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.
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.
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.
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)
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.
Sizning papkangiz. Siz shu yerda tahrirlaysiz. Git o'zgarishni ko'radi, lekin hali eslab qolmaydi.
git add dan keyingi holat. Bu tayyorlangan o'zgarishlar ro'yxati — commitga nima kirishini siz tanlaysiz.
git commit dan keyin. O'zgarish tarixga yozildi va endi yo'qolmaydi.
# 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.
"fix" "update" "ishladi" "asdfgh" "o'zgartirishlar" "final version" // Uch oydan keyin bu xabarlar // hech narsa anglatmaydi.
"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.
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
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.
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
main har doim ishlaydigan holatda qoladi — uni istalgan payt ko'rsatish yoki deploy qilish mumkin.main o'zgarmagan bo'lsa, Git shunchaki ko'rsatkichni oldinga suradi. Yangi commit yaratilmaydi.# 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 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.
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.
<<<<<<< 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
<<<, ===, >>>.git add va git commit — konflikt yopildi.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
Faylni tahrirlang, git add va git commit bajaring. Grafda yangi tugun paydo bo'lishini kuzating.
git switch -c yangi-dizayn bilan branch yarating va u yerda 2 ta commit qiling. Graf ikkiga bo'linadi.
Ikkala branchda ham 1-qatorni o'zgartiring, keyin merge qiling. Konflikt chiqadi — uni yeching.
git log bilan butun tarixni ko'ring va varaqaga commitlar sonini hamda oxirgi hash ni yozing.
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.
1) Объясни разницу между git merge и git rebase простыми словами, с примером на графе коммитов. 2) Я случайно сделал commit не в ту ветку. Как перенести последний коммит в другую ветку, ничего не потеряв? Объясни каждую команду перед выполнением. 3) Напиши сообщение коммита в формате Conventional Commits для: "исправил деление на ноль в конвертере валют".
--force, reset --hard yoki clean -fd taklif qiladi. Bu buyruqlar ishni qaytarib bo'lmas darajada o'chiradi.git status — xavfsiz, u hech narsani o'zgartirmaydi. Shubhalansangiz — avval shuni yozing.