Tarkibga o'tish

Git va GitHub β€” Noldan boshlovchilar uchun amaliy kitob

Bu kitob hech qachon versiya nazorati ishlatmagan odam ham tushunadigan tilda yozilgan. Git'ni terminal qora oynasidan qo'rqmasdan, GitHub'ni esa "tugmalar o'rmoni"dek emas, mantiqan tushunib o'rganasiz. Har bobda: sodda nazariya -> tayyor, sinab tekshirilgan buyruqlar -> 20 ta mashq (o'zingiz bajarasiz). Jami 24 bob, 480 mashq.

🎨 Har bob SVG diagrammalar bilan boyitilgan β€” uch zona, branch, merge va rebase, remote/push/pull, PR oqimi kabi tushunchalar ko'z bilan ko'rib o'rganiladi.

Qoida: Git o'qib o'rganilmaydi β€” YOZIB o'rganiladi. Har bir buyruqni kompyuterda o'zingiz tering. Xato chiqsa β€” bu yaxshi, xatodan o'rganasiz (bu kitob xatodan qaytishni ham o'rgatadi).


Qanday o'qish kerak

  1. Boblarni tartib bilan o'qing (01 -> 02 -> ...). Har biri oldingisiga tayanadi.
  2. 2-bobda Git'ni o'rnatib, o'zingizni tanishtiring (user.name, user.email) β€” keyingi hamma bob shunga asoslangan.
  3. Har bob oxiridagi 20 ta mashqni o'zingiz bajaring β€” buyruqlarni ko'chirib qo'yish bilan Git o'rganilmaydi.
  4. Diagrammalar tushunchani tezroq singdiradi β€” ularga e'tibor bering.

Talab

Kerak Daraja
Kompyuter (Windows / macOS / Linux) Shart
Git (2-bobda o'rnatamiz) Shart
GitHub akkaunti (10-bobda ochamiz, bepul) Shart
Oldingi dasturlash tajribasi Shart emas

I qism β€” Git asoslari

# Bob Nima o'rganasiz
01 Versiya nazorati nima? Fayllarni loyiha_final_v2.zip deb saqlash og'rig'idan boshlab, versiya nazorati (loyiha uchun "vaqt mashinasi") nima ekanini, snapshot modelini, markazlashgan va taqsimlangan tizimlar farqini, eng muhimi β€” ko'pchilik chalkashtiradigan Git va GitHub farqini aniq ajratamiz.
02 Git'ni o'rnatish va sozlash Git'ni har uch tizimga o'rnatamiz, terminaldan qo'rqmaslikni va kerakli buyruqlarni (pwd, cd, ls) o'rganamiz, Git'ga o'zimizni tanishtiramiz (user.name, user.email), config'ning uch darajasini (system/global/local), default branch'ni main qilishni va alias yasashni ko'rib chiqamiz.
03 Birinchi repozitoriy va uch zona Oddiy papkani git init bilan repozitoriyga aylantirishni, yashirin .git katalogini, butun kitobning eng muhim modeli β€” uch zonani (Working Directory, Staging Area, Repository), faylning hayot siklini (untracked -> staged -> committed -> modified) va git statusni o'qishni o'rganamiz.
04 O'zgarishlarni saqlash: add va commit O'zgarishlarni tarixga muhrlashning ikki qadamini β€” git add (staging'ga qo'yish) va git commit (surat olish)ni, nega ikki bosqich kerakligini, yaxshi commit xabarini, .gitignore bilan keraksiz fayllarni chetlatishni hamda git rm, git mv, git diff --stagedni o'rganamiz.
05 Tarixni o'qish: log, diff, show Commit tarixini o'qishni: git log variantlari (--oneline, --graph, --stat, --author), bitta commit nimadan tuzilganini (hash, parent, tree, muallif), HEAD ko'rsatkichini, git showni va git diffning uch turini bir-biridan ajratishni o'rganamiz.
06 Orqaga qaytish: restore, reset, revert Xato qilganda orqaga qaytishni: git restore (working zonani tozalash), git restore --staged, git resetning uch turi (--soft/--mixed/--hard) va ularning uch zonaga ta'siri, ulashilgan tarixni xavfsiz bekor qiluvchi git revert va git commit --amendni o'rganamiz.

II qism β€” Branch va birlashtirish

# Bob Nima o'rganasiz
07 Branch β€” shoxlar Asosiy kodni buzmasdan yangi xususiyat sinash uchun branch (shox)ni: branch aslida arzon ko'rsatkich ekanini, git branch, git switch/git switch -c, HEAD nima ekanini, shoxlar ajralib ketishini (divergence), -d/-D/-m bilan o'chirish/nomlashni va "detached HEAD" holatini o'rganamiz.
08 Merge va konfliktlar Tayyor ishni asosiy shoxga qaytadan qo'shishni β€” merge'ni: fast-forward va 3-way merge farqini, --no-ff bayrog'ini, KONFLIKT hodisasini, konflikt markerlarini o'qib qo'lda hal qilishni va git merge --abort bilan ortga qaytishni qadam-baqadam o'rganamiz.
09 Rebase va interaktiv rebase Chigal tarixni toza chiziqli tarixga aylantiradigan git rebaseni: commitlarni "qayta o'ynashni", merge bilan farqini, OLTIN QOIDA (ulashilgan commitni rebase qilmaslik)ni, git rebase -i bilan squash/reword/drop'ni, konfliktni --continue/--abort bilan boshqarishni va git pull --rebaseni o'rganamiz.

III qism β€” GitHub bilan ishlash

# Bob Nima o'rganasiz
10 GitHub bilan tanishuv Lokal repo nega yetarli emasligini, GitHub aslida nimaligini, bepul akkaunt ochish va profilni to'ldirishni, birinchi repozitoriy yaratishni (public/private, README/gitignore/license), "remote" va origin tushunchasini, repo sahifasi anatomiyasini, README "loyiha yuzi" ekanini, Star/Fork/Watch'ni va GitHub/GitLab/Bitbucket farqini o'rganamiz.
11 Remote: clone, push, fetch, pull Lokal Git'ni GitHub repozitoriysi bilan bog'lashni: git clone, git remote add origin, git push, git fetch (xavfsiz olish) va git pull (fetch+merge)ni, eng muhimi fetch va pull farqi hamda push rad etilganda nima qilishni, origin/main tracking branch va HTTPS/SSH url farqini o'rganamiz.
12 Autentifikatsiya: SSH va token GitHub sizdan kimligingizni qanday so'rashini va nega oddiy parol ishlamasligini: HTTPS + Personal Access Token (PAT) va SSH kalit yo'llarini, ssh-keygen, ochiq kalitni qo'yish, ssh -T bilan tekshirish, credential helper, git remote set-url va 2FA hamda sirni hech qachon commit qilmaslikni o'rganamiz.
13 Pull Request va code review Nega to'g'ridan-to'g'ri main'ga push xavfli ekanini va yechimi β€” Pull Request'ni: o'z repoda PR oqimini (branch -> push -> PR -> merge) va begona loyiha uchun fork modelini, reviewer/izoh/Approve jarayonini, uch xil merge usuli farqini, Draft PR va branch protection'ni o'rganamiz.
14 Hamkorlik oqimlari: Git Flow, GitHub Flow Branch va PR'ni jamoa uchun bitta tartibga β€” oqimga bog'lashni: GitHub Flow, Git Flow va trunk-based oqimlarini, qaysi birini qachon tanlashni, branch nomlash (feature/login), Conventional Commits (feat:, fix:), main'ni himoyalash va hotfix ssenariysini o'rganamiz.

IV qism β€” Kuchli vositalar

# Bob Nima o'rganasiz
15 Stash, tag va cherry-pick Uchta "qutqaruvchi" buyruqni: git stash (yarim ishni vaqtincha javonga qo'yish), git tag (relizni v1.0.0 bilan belgilash, lightweight/annotated farqi, semantik versiyalash, GitHub Releases) va git cherry-pick (bittagina commitni boshqa branchga ko'chirish)ni o'rganamiz.
16 Tarixni tozalash va reflog Tarixni chiroyli qilish va "hammasini yo'qotdim!" holatidan qutqarishni: git commit --amend, interaktiv rebase bilan squash/reword/reorder/drop, git push --force-with-lease xavfsiz majburlashni, git reflog bilan o'chgan commit/branch'ni tiklashni, git fsckni va tozalashning oltin qoidasini o'rganamiz.
17 Xatoni qidirish: bisect, blame, grep "Ilgari ishlardi, endi buzilgan β€” qaysi commit buzdi?" savoliga javob topishni: git bisect (ikkilik qidiruv) va bisect run, git blame (har satrni kim/qachon yozgani), git log -S/-G (pickaxe) va git log --grep bilan aybdor commitni topishni o'rganamiz.
18 Submodule, Git LFS va monorepo Loyiha o'sgani sayin uchraydigan uchta muammoni: boshqa repoga bog'liqlik (submodule, .gitmodules), katta binar fayllar (Git LFS, .gitattributes) va bitta repoda ko'p loyiha (monorepo/polyrepo, git subtree)ni β€” hammasi alohida sinov papkasida tekshirilgan β€” o'rganamiz.

V qism β€” Jamoa va avtomatlashtirish

# Bob Nima o'rganasiz
19 GitHub vositalari: Issues, Projects Jamoa ishini boshqarishni: Issues (xato/vazifa kartochkalari) va hayot sikli, label/milestone/assignee, commit/PR orqali issue'ni avtomatik yopish (Closes #12), GitHub Projects kanban doskasi, .github/ shablonlari va gh (GitHub CLI) bilan ishlashni o'rganamiz.
20 GitHub Actions β€” CI/CD Qo'lda test/deploy zerikarli ekanidan boshlab CI/CD nimaligini, GitHub Actions ishlashini β€” .github/workflows yaml anatomiyasini (on, jobs, steps, uses, run, runs-on), Node/Python testlarini matrix bilan avtomatlashtirishni, secret, status badge, deploy va cache'ni o'rganamiz.
21 Open source'ga hissa qo'shish Ochiq kod dunyosini: sog'lom repozitoriy fayllarini (README, LICENSE, CONTRIBUTING, CODE_OF_CONDUCT), litsenziyalar farqini (MIT/Apache/GPL), birinchi hissa oqimini (good first issue -> fork -> branch -> PR -> merge), upstream bilan sinxron tutishni, maintainer odobi va semver/CHANGELOG'ni o'rganamiz.
22 GitHub Pages va portfolio Kodingizni dunyoga ko'rsatishni: GitHub Pages bilan bepul jonli sayt (ikki turi β€” username.github.io va loyiha sayti), saytni yoqish, URL tuzilishi, custom domen, Jekyll va Actions orqali deploy, hamda profil README, badge'lar va pin qilingan repolar bilan portfolio yasashni o'rganamiz.

VI qism β€” Xavfsizlik va yakun

# Bob Nima o'rganasiz
23 Xavfsizlik va eng yaxshi amaliyotlar Git/GitHub'ni xavfsiz ishlatishni: sirni (parol, .env) hech qachon commit qilmaslik (va tushib qolsa rotate qilish), imzolangan commit va Verified belgisi (SSH/GPG), 2FA, branch protection, GitHub xavfsizlik vositalari (Dependabot, secret scanning, CodeQL), minimal ruxsat va --force-with-leaseni o'rganamiz.
24 Yakuniy loyiha va shpargalka O'rgangan hamma narsani bitta loyihada birlashtirib jamoa ishini boshidan oxirigacha simulyatsiya qilamiz (init -> commit -> push -> branch -> PR -> review -> merge -> tag -> Pages deploy), vahimali vaziyatlarni tinch hal qilamiz, to'liq buyruq shpargalkasini bitta jadvalda yig'amiz va keyingi yo'lni belgilaymiz.

Muallif

Oqil Imomnazarov β€” ioqil.uz Β· Telegram Β· YouTube

Kitob bepul tarqatiladi (CC BY-NC-SA 4.0). Savdo qilish taqiqlanadi.