11-dars: GitHub bilan ishlash
Dars haqida
Davomiyligi: 90 daqiqa Maqsad: Talaba GitHub akkaunt yaratishi, repository ochishi, kodni push/pull qilishi, branchlar bilan ishlashi va boshqalar loyihasiga hissa qo'shishni o'rganishi kerak.
1. GitHub nima?
GitHub — Git repositoriyalarini internetda saqlash va boshqalar bilan ulashish platformasi.
2008-yilda chiqarilgan. 2018-yilda Microsoft sotib oldi (~$7.5 milliard).
Hozir:
- 100M+ foydalanuvchi
- 400M+ repository
- Dunyodagi dasturchilar standardi
2. Nima uchun GitHub kerak?
| Vazifa | Tushuntirish |
|---|---|
| Bulutda saqlash | Disk yo'qolsa — kod GitHub'da |
| Portfolio | Ish berib turganda kod ko'rsatish |
| Hamkorlik | 100 ta dasturchi bir loyihada |
| Ochiq kod | Linux, React, VS Code va boshqalar |
| Issue | Xato va vazifalar ro'yxati |
| CI/CD | Avtomatik test va deployment |
| GitHub Pages | Bepul sayt yaratish |
3. GitHub alternativlari
- GitLab —
gitlab.com(DevOps integratsiyasi yaxshi) - Bitbucket —
bitbucket.org(Atlassian) - Codeberg —
codeberg.org(ochiq kod, hamjamiyat) - Gitea — o'zingizning serveringizda
Foundation kursida: GitHub.
4. GitHub akkaunt yaratish
github.comga kiring- Sign up
- Email va parol
- Username — professional bo'lsin:
akmalkarimov✓akmal-karimov✓akarimov✓xxx_killer_xxx✗princess123✗
- Email tasdiqlash
- Akkaunt tayyor
Username muhim
GitHub username — sizning professional kalitingiz:
github.com/akmalkarimov— bu sizning URL- Rezyumeda yoziladi
- Ish berib turganda ko'rinadi
- Keyinchalik o'zgartirish qiyin
Yaxshi tanlang.
5. Profilni sozlash
- Yuqori o'ng burchakda profil rasmi → Your profile
- Edit profile:
- Profil rasmi (real foto)
- Bio (1-2 jumla — kim siz)
- Location (shahar)
- Website (bor bo'lsa)
- Twitter, LinkedIn
Yaxshi GitHub profili
Ish beruvchi avval GitHub'ga kiradi:
- Profil rasmi bormi?
- Bio aniqmi?
- Repository'lar bormi?
- README chiroylimi?
- Aktivlikmi (yashil kvadratlar)?
Birinchi taassurot muhim.
6. Birinchi repository yaratish
- Yuqori o'ng burchakda + → New repository
- Sozlamalar:
- Repository name:
mening-birinchi-repo - Description: 1-2 jumla
- Public yoki Private
- Add a README belgilang
- Add .gitignore: tanlang (None, Python, Node va h.k.)
- License: hozircha None
- Repository name:
- Create repository
Public vs Private
| Public | Private |
|---|---|
| Hammaga ko'rinadi | Faqat sizga (yoki ruxsat berganlar) |
| Bepul | Bepul (lekin ba'zi funksiyalar Pro) |
| Portfolio uchun | Maxfiy ish uchun |
Tavsiya
O'quv loyihalar — public qiling. Portfolio uchun foydali.
Shaxsiy yoki maxfiy — private.
7. Repository'ning asosiy qismlari
8. README.md — eng muhim fayl
README — repo'ning bosh sahifasi. GitHub avtomatik ko'rsatadi.
Yaxshi README tarkibi
# Loyiha nomi
Loyiha haqida 1-2 jumla.
## Tavsif
Batafsilroq nima qilinmoqda.
## O'rnatish
\`\`\`bash
$ git clone https://github.com/user/repo.git
$ cd repo
$ npm install
\`\`\`
## Ishlatish
\`\`\`bash
$ npm start
\`\`\`
## Misol
[Screenshot yoki kod misoli]
## Texnologiyalar
- HTML, CSS, JavaScript
- React
- Node.js
## Muallif
Akmal Karimov — [@akmalkarimov](https://github.com/akmalkarimov)
## Litsenziya
MITMarkdown
GitHub README'da Markdown ishlatiladi:
# Sarlavha 1
## Sarlavha 2
### Sarlavha 3
**Bold matn**
*Italic matn*
~~O'chirilgan~~
- Bullet list
- Element
- Pastki
1. Numbered
2. Element
[Havola matni](https://example.com)

`inline kod`
\`\`\`python
# Kod bloki
print("Salom")
\`\`\`
> Iqtibos
| Jadval | Sarlavha |
|--------|----------|
| Hujayra | Hujayra |9. Repository'ni local'ga olish — clone
$ git clone https://github.com/akmalkarimov/mening-birinchi-repo.git
$ cd mening-birinchi-repo
$ lsclone — GitHub'dagi repo'ni kompyuteringizga butunligicha nusxalash.
URL'ni qayerdan olish:
- Repo sahifasida Code yashil tugmasi → HTTPS yoki SSH havolasini nusxalash
10. Local repo'ni GitHub bilan bog'lash
Avval GitHub'da yangi repo yarating (README'siz):
$ cd ~/oquv-loyiha
$ git remote add origin https://github.com/akmalkarimov/oquv-loyiha.git
$ git remote -v
origin https://github.com/akmalkarimov/oquv-loyiha.git (fetch)
origin https://github.com/akmalkarimov/oquv-loyiha.git (push)origin — GitHub repo'ning nick'i (sukut bo'yicha).
11. push — GitHub'ga yuborish
$ git push -u origin main-u origin main — birinchi marta. Keyingilarda:
$ git pushBu — sizning local commit'larni GitHub'ga yuklaydi.
Push qachon?
Har necha commit'dan keyin push qiling. Maslahat:
- Kichik o'zgarishlar — kun oxirida
- Muhim featurelar — darrov
- Boshqalar bilan ishlasangiz — tez-tez
Push qilinmagan commit — faqat sizning kompyuteringizda.
12. pull — GitHub'dan olish
$ git pullGitHub'dagi yangi commit'larni local'ga oladi.
Foydalanish: boshqa odam o'zgartirgan bo'lsa yoki boshqa kompyuterdan ishlasangiz.
13. Authentication — autentifikatsiya
GitHub'ga push qilayotganda — kim ekanligingizni tasdiqlash kerak.
Eski usul: HTTPS + parol
git push qilganda parol so'raydi. 2021 yildan beri parol ishlamaydi.
Yangi usul 1: Personal Access Token (PAT)
- GitHub → Settings → Developer settings
- Personal access tokens → Tokens (classic)
- Generate new token
- Scope tanlang:
repo - Token'ni nusxalang va saqlang (qaytib ko'rsatilmaydi!)
git push qilganda — parol o'rniga token kiritasiz.
Yangi usul 2: SSH Key
- Terminal:bash
$ ssh-keygen -t ed25519 -C "akmal@example.com" - Enter, Enter, Enter (standart javoblarni qabul qilish)
- Public key:bash
$ cat ~/.ssh/id_ed25519.pub ssh-ed25519 AAAA... akmal@example.com - Nusxalang
- GitHub → Settings → SSH and GPG keys → New SSH key
- Yopishtiring va Add SSH key
Endi repo URL'ni SSH formatga o'zgartiring:
$ git remote set-url origin git@github.com:akmalkarimov/repo.gitEndi push parolsiz.
Yangi usul 3: GitHub CLI
$ gh auth loginYo'l-yo'riq beradi, browser'da login qildiradi.
Tavsiya
Boshlovchi uchun — GitHub CLI (gh) eng oson.
brew install gh (Mac), winget install --id GitHub.cli (Windows).
14. Branchlar bilan ishlash
$ git branch # mavjud branchlar
$ git branch new-feature # yangi branch yaratish
$ git checkout new-feature # branchga o'tish
$ git checkout -b another # birga (yarat + o'tish)
$ git checkout main # main'ga qaytishMisol: yangi feature
$ git checkout -b add-login
# Kodda o'zgarishlar...
$ git add .
$ git commit -m "feat: add login form"
$ git push origin add-login # GitHub'ga yangi branchGitHub'da add-login branch ko'rinadi.
15. Pull Request (PR) — so'rov
Pull Request (PR) — branchdagi o'zgarishlarni main'ga qo'shishni so'rash.
PR yaratish
- GitHub'da repo sahifasi
- Branchni tanlang (yoki yashil tugmacha Compare & pull request chiqadi)
- New pull request
- Sarlavha va tavsif yozing
- Create pull request
Review
Boshqalar:
- Kodni o'qiydi
- Izoh qoldiradi
- Approve yoki Request changes
Merge
PR tasdiqlangandan keyin:
- Merge pull request tugmasi
- Branch main'ga qo'shiladi
- Endi branch'ni o'chirish mumkin
Tushuncha: nima uchun PR?
Real loyihalarda — hech kim main'ga to'g'ridan-to'g'ri push qila olmaydi.
Hamma:
- Branch yaratadi
- Ishlaydi
- PR ochadi
- Boshqalar tekshiradi (code review)
- Tasdiqlangach — merge
Bu — kod sifati va xavfsizligini ta'minlaydi.
16. Issues — vazifalar va xatolar
Issue — repo'ga oid vazifa, xato yoki taklif.
Misol
Title: Login forma ishlamayapti
Labels: bug, priority-high
Tavsif:
Foydalanuvchi parol kiritganda, "Login muvaffaqiyatsiz" xabari chiqadi.
Qadamlar:
1. /login sahifasiga kirish
2. Email va parol kiritish
3. Login tugmasini bosish
Kutilgan: dashboard'ga o'tish
Real: xato xabari
Brauzer: Chrome 120
OS: macOS 14Labels
bug— xatofeature— yangi xususiyatenhancement— yaxshilashdocumentation— hujjathelp wanted— yordam kerakgood first issue— boshlovchi uchun
17. Fork — boshqa loyihaga hissa
Fork — boshqa odamning repo'sini o'zingizga nusxalash.
Qadamlar
- GitHub'da boshqa loyiha sahifasiga kiring
- Yuqori o'ng burchakda Fork tugmasi
- O'zingizga nusxalanadi
- Clone qiling
- O'zgartirish kiriting
- Push qiling (o'z fork'ingizga)
- Pull Request original repo'ga
Bu — ochiq kod (open source) ishlash usuli.
18. README bilan profilni qo'shish
Profile README
GitHub'da maxsus: sizning usernameingiz bilan bir xil repo nomi yarating.
Misol: akmalkarimov/akmalkarimov
Bu repo'ning README — profilingiz bosh sahifasida ko'rinadi.
Misol
### Salom! Mening ismim Akmal 👋
🌱 Hozir o'rganaman: Python, JavaScript
🚀 Loyihalarim:
- [Project 1](#)
- [Project 2](#)
📫 Aloqa: akmal@email.comGitHub Pages — bepul portfolio.
19. GitHub Pages — bepul sayt
GitHub'da bepul sayt ishlatish.
Qadamlar
- Repo yarating:
username.github.io index.htmlfaylini push qiling- URL:
https://username.github.io/
Bu — bepul shaxsiy sayt!
Yoki har repo uchun:
- Repo Settings → Pages
- Source:
mainbranch - URL:
https://username.github.io/repo-name/
20. GitHub Stats va Activity
Aktivlik kalendar — yashil kvadratlar (har commit'da).
█ █ ░ █ █ ░ ░ ░ — kuni commit yo'q
█ █ █ █ █ █ ░ █ — kuni commit bor
█ █ █ █ █ █ ░Ish beruvchi ko'radi: siz har kuni ishlaysizmi?
Yashil kvadratlar
Har kun kichik commit qilish odat bo'lsin.
100% to'lgan kalendar — kuchli signal.
21. To'liq workflow misoli
# 1. GitHub'da repo yaratdingiz: oquv-loyiha
# 2. Local'da yarating
$ mkdir oquv-loyiha
$ cd oquv-loyiha
$ git init
# 3. Bog'lang
$ git remote add origin https://github.com/akmalkarimov/oquv-loyiha.git
# 4. Birinchi fayl
$ echo "# Oquv Loyiha" > README.md
$ git add README.md
$ git commit -m "Initial commit"
# 5. Push
$ git branch -M main
$ git push -u origin main
# 6. Yangi feature uchun branch
$ git checkout -b feature/add-login
# 7. Kodni o'zgartiring...
$ echo "<h1>Login</h1>" > login.html
$ git add login.html
$ git commit -m "feat: add login page"
# 8. Push (yangi branch)
$ git push -u origin feature/add-login
# 9. GitHub'da Pull Request yarating
# (brauzer orqali)
# 10. Tasdiqlangandan keyin — merge
# (GitHub'da)
# 11. Local'da main'ga qaytish va pull
$ git checkout main
$ git pullDarsdagi topshiriqlar
Topshiriq 1 — GitHub akkaunt
github.comda akkaunt yarating (yo'q bo'lsa)- Profil sozlang:
- Profil rasmi (real foto)
- Bio
- Location
- Email (public)
- Username professional bo'lsin
Profil URL'ingizni Drive'ga yozing.
Topshiriq 2 — Birinchi repo (GitHub'da)
- GitHub'da yangi repo yarating:
foundation-portfolio - Public qiling
- README qo'shing
- .gitignore:
None - Create repository
Repository URL'ini daftarga yozing.
Topshiriq 3 — Clone va Push
Repo'ni local'ga olish:
bash$ git clone https://github.com/USERNAME/foundation-portfolio.git $ cd foundation-portfolioYangi fayl yarating:
bash$ echo "## Mening yutuqlarim" >> README.md $ echo "- 1-oy: Office tugallandi" >> README.md $ echo "- 2-oy: AI tugallandi" >> README.md $ echo "- 3-oy: CS asoslari" >> README.mdCommit:
bash$ git add README.md $ git commit -m "docs: add achievements"Push:
bash$ git push
GitHub'da yangilanganini ko'ring.
Topshiriq 4 — README chiroyli qiling
GitHub'da foundation-portfolio repo README'sini Markdown bilan chiroyli qiling.
Tarkib:
# Foundation Portfolio
Bu — Master IT o'quv markazi Foundation kursimning portfoliosi.
## Talaba
**[Sizning ismingiz]**
## Davr
2026-yil may - oktyabr (6 oy)
## Yo'nalishlar
### 1-oy: Kompyuter asoslari va Office
- Kompyuter asoslari: 2 dars
- Word: 4 dars
- Excel: 5 dars
- Imtihon: ✓
### 2-oy: Excel davomi, PowerPoint va AI
- Excel davomi: 1 dars
- PowerPoint: 2 dars
- AI va promptlar: 7 dars
- Canva: 1 dars
- Imtihon: ✓
### 3-oy: CS asoslari va Git/GitHub
- Algoritmlar
- Scratch
- Terminal
- Git va GitHub
- Imtihon: tez orada
## Loyihalar
- [Birinchi loyiha](#)
- [Ikkinchi loyiha](#)
## Aloqa
- Email: akmal@example.com
- GitHub: [@akmalkarimov](https://github.com/akmalkarimov)Commit va push qiling.
Topshiriq 5 — Branchlar
$ cd foundation-portfolio
# Yangi branch
$ git checkout -b feature/projects
# Yangi fayl
$ echo "# Loyihalarim" > projects.md
$ echo "## 1. Scratch o'yini" >> projects.md
$ echo "Olma tutish o'yini..." >> projects.md
$ echo "" >> projects.md
$ echo "## 2. README portfolio" >> projects.md
$ echo "Bu repository..." >> projects.md
# Commit
$ git add projects.md
$ git commit -m "feat: add projects list"
# Push (yangi branch)
$ git push -u origin feature/projectsGitHub'da ikkita branch bor: main va feature/projects.
Topshiriq 6 — Pull Request
- GitHub'da
foundation-portfoliorepo sahifasi - Yuqorida sariq xabar: Compare & pull request (yoki Pull requests tab → New)
- Branch:
feature/projects→main - Sarlavha:
feat: add projects list - Tavsif:
Bu PR — loyihalar ro'yxati qo'shadi. ## O'zgarishlar - Yangi fayl: projects.md - 2 ta loyiha tafsiloti - Create pull request
PR ko'rinishini screenshot oling.
Keyin: Merge pull request tugmasini bosing.
Local'da:
$ git checkout main
$ git pullTopshiriq 7 — Issue yaratish
- Repo sahifasi → Issues tab → New issue
- Sarlavha:
README dizaynni yaxshilash - Tavsif:markdown
## Tavsif README hozirgi holatda — sodda. Quyidagilarni qo'shish kerak: - [ ] Logo / banner rasm - [ ] Skills/Technologies bo'limi - [ ] Loyihalar uchun screenshot - [ ] Stats badges (GitHub Stats) - [ ] Aloqa bo'limini kengaytirish ## Prioritet Medium - Labels:
enhancement,documentation - Submit new issue
Issue URL'ini daftarga yozing.
Topshiriq 8 — Fork va contribute
- GitHub'da boshqa bir mashhur loyihaga kiring (masalan,
freeCodeCamp/freeCodeCamp) - Star tugmasini bosing (loyihaga "like")
- Fork tugmasini bosing — o'zingizga nusxa olasiz
- Sizning fork'ingiz —
github.com/USERNAME/freeCodeCamp
(O'zgartirish va PR — keyingi vazifalarda)
Topshiriq 9 — Profile README
- GitHub'da yangi repo yarating, nom — sizning username'ingiz (masalan,
akmalkarimov) - README qo'shing
- Profile README — profilingizning bosh sahifasi
- Quyidagi shablon:
### Salom! Mening ismim [Ism] 👋
🌍 Toshkent, O'zbekiston
💻 Hozir o'rganaman:
- Foundation: CS asoslari
- Scratch, Git, GitHub
- Tez orada: C va Python
📚 Foundation darsligim:
- [foundation-portfolio](https://github.com/USERNAME/foundation-portfolio)
📫 Aloqa:
- Email: akmal@example.com
- LinkedIn: [linkedin.com/in/akmalkarimov](https://linkedin.com/in/akmalkarimov)- Profilingizga kirib ko'ring:
github.com/USERNAME
README ko'rinmoqda?
Topshiriq 10 — Daily commit habit
Keyingi 7 kun davomida — har kuni eng kamida 1 ta commit qiling.
Vazifa bo'lmasa ham:
- README'da kichik o'zgartirish
- Yangi izoh
- Bir jumla qo'shish
Maqsad — yashil kalendar odati.
Har kuni daftarga yozing:
- Sana
- Commit message
- Nimani o'zgartirdingiz
Asosiy tushunchalar (lug'at)
| Termin | Qisqacha izoh |
|---|---|
| GitHub | Git repositoriy hosting platformasi |
| Repository (repo) | GitHub'dagi loyiha |
| Clone | Repo'ni kompyuterga nusxalash |
| Push | Local'dan GitHub'ga yuklash |
| Pull | GitHub'dan local'ga olish |
| Remote | Internet'dagi nusxa (origin) |
| Origin | Default remote nick'i |
| Branch | Tarmoq, rivojlanish chizig'i |
| main / master | Asosiy branch |
| Pull Request (PR) | Branchni main'ga qo'shish so'rovi |
| Merge | Branchni qo'shish |
| Issue | Vazifa yoki xato |
| Fork | Boshqa repo'ni o'zingizga nusxalash |
| Star | Loyihaga "like" |
| README.md | Repo bosh sahifa fayl |
| Markdown | README sintaksisi |
| PAT | Personal Access Token |
| SSH Key | Xavfsiz autentifikatsiya kalit |
| GitHub Pages | Bepul sayt |
| Contribution graph | Yashil kvadratlar kalendar |