Issue — loyihada muammo bildirish, label, assignee, milestone
Muammodan boshlaylik
Loyihadagi vazifalar qayerda?
- Ba'zilari — Telegram guruhida, 300 ta xabar ichida
- Ba'zilari — rahbarning boshida
- Ba'zilari — sizning qog'ozdagi ro'yxatingizda
- Mijoz yozgan xato — kimning pochtasida edi?
"Bu xatoni kim tuzatyapti?", "Bu qachon tuzatildi?", "Nima uchun bunday qaror qilingan edi?" — javob yo'q.
GitHub Issues — vazifalar, xatolar va g'oyalarni kod bilan bir joyda kuzatish tizimi.
Issue nima?
Issue — bitta muammo, vazifa yoki taklif uchun sahifa:
- Sarlavha va tavsif (Markdown)
- Raqam:
#42— butun loyiha bo'ylab havola qilinadi - Izohlar — muhokama
- Labels — tur va holat
- Assignees — kim mas'ul
- Milestone — qaysi versiyaga
- Bog'langan PR lar va commitlar
Repozitoriy → Issues tabi → New issue.
Yaxshi bug report
Yomon:
Sarlavha: Ishlamayapti
Tavsif: Savat ishlamayapti, tuzating!!!
Dasturchi hech narsa qila olmaydi: qaysi savat? Qanday ishlamayapti? Qaysi brauzerda?
Yaxshi:
**Sarlavha:** Savatga 10 dan ortiq mahsulot qo'shilganda jami summa noto'g'ri
## Qayta takrorlash qadamlari
1. /mahsulotlar sahifasiga o'ting
2. Istalgan mahsulotni 11 marta savatga qo'shing
3. /savat ga o'ting
## Kutilgan natija
Jami: 11 × 120 000 = 1 320 000 so'm
## Haqiqiy natija
Jami: 1 200 000 so'm (11-mahsulot hisobga olinmayapti)
## Muhit
- Brauzer: Chrome 130, Android
- Hisob: test@dokon.uz
- Vaqt: 2026-11-06, ~14:00
## Skrinshot
(rasm)
## Qo'shimcha
Konsolda xato yo'q. Kompyuterda ham takrorlanadi.
Asosiy qismlar: qadamlar, kutilgan, haqiqiy, muhit. Qadamlar bo'yicha xatoni takrorlay olgan dasturchi — uni yarim tuzatgan dasturchi.
Issue shablonlari
.github/ISSUE_TEMPLATE/ papkasida shablonlar yaratish mumkin — "Bug report", "Feature request". Yangi issue ochilganda foydalanuvchi turini tanlaydi va tayyor shaklni to'ldiradi. Settings → Features → Issues → Set up templates.
Labels — yorliqlar
Standart yorliqlar:
| Label | Ma'nosi |
|---|---|
bug |
Xato |
enhancement |
Yangi funksiya yoki yaxshilash |
documentation |
Hujjat |
good first issue |
Yangi hissa qo'shuvchilar uchun oson (24-dars) |
help wanted |
Yordam kerak |
question |
Savol |
duplicate, wontfix, invalid |
Yopilish sabablari |
O'z yorliqlaringiz: priority: high, area: frontend, area: tolov, status: blocked. Issues → Labels → New label.
Filtrlash:
is:open label:bug label:"priority: high"
is:open assignee:@me
is:closed milestone:v2.0
Assignees — mas'ul
Issue ni o'zingizga yoki boshqaga biriktiring — bitta aniq mas'ul. "Hamma" mas'ul bo'lsa — hech kim mas'ul emas.
Issue ni ish boshlaganda olish — jamoaga "men bu bilan shug'ullanyapman" signali: ikki kishi bir ishni qilmaydi.
Milestones — bosqichlar
Milestone — issue larni versiya yoki muddat bo'yicha guruhlash: "v2.0 — Dekabr", "MVP", "Sprint 14".
Issues → Milestones → New milestone (nom, muddat, tavsif). Har bir milestone progress chizig'ini ko'rsatadi: "12 ta ochiq, 30 ta yopiq — 71%".
Kattaroq rejalashtirish uchun — GitHub Projects (42-dars): Kanban doska.
Issue va kodni bog'lash
Havolalar
Commit xabarida, PR da yoki izohda #42 yozing — avtomatik havola bo'ladi va issue sahifasida "mentioned this" ko'rinadi:
git commit -m "Savat: 10 dan ortiq mahsulot hisoblanishi tuzatildi (#42)"
Boshqa repozitoriydagi issue: kompaniya/backend#15.
Avtomatik yopish
PR tavsifida yoki commit xabarida (main ga tushganda):
Closes #42
Fixes #42
Resolves #42
PR merge qilinganda #42 avtomatik yopiladi, va issue sahifasida qaysi PR uni hal qilgani ko'rinadi. Bir nechta: Closes #42, closes #43.
[!TIP] Bu bog'lanish — eng qimmatli narsa. Bir yildan keyin kod qatorida
git blame(9-dars) → commit → PR → issue → mijozning dastlabki shikoyati va butun muhokama. "Nima uchun?" savoliga to'liq javob.
Issue dan branch
Issue sahifasida o'ng panelda Development → Create a branch — GitHub 42-savat-jami-xato kabi branch yaratadi va issue bilan bog'laydi.
Issue larni boshqarish
- Yopish — hal qilindi yoki kerak emas. Sabab bilan: "Completed" yoki "Not planned"
- Duplicate —
Duplicate of #15deb yozib yopish - Lock — muhokama nazoratdan chiqsa
- Pin — muhim issue ni ro'yxat tepasiga
- Transfer — boshqa repozitoriyga ko'chirish
Terminaldan (54-dars):
gh issue list --label bug
gh issue create --title "..." --body "..." --label bug
gh issue view 42
gh issue close 42
Discussions — issue bo'lmagan narsalar uchun
"Qanday qilib ...?" savollari, g'oyalar, e'lonlar — bular issue emas (aniq bajariladigan vazifa yo'q). Ular uchun — Discussions tabi (Settings → Features da yoqiladi). Issue lar ro'yxati toza qoladi: faqat bajariladigan ishlar.
Nima uchun shunday?
Nima uchun vazifalarni kod bilan bir joyda — GitHub da — kuzatish kerak? Jira, Trello, Notion kabi vositalar bor-ku?
Ular ham yaxshi, va katta kompaniyalar ko'pincha ularni ishlatadi. Lekin kod bilan bir joyda bo'lishning noyob afzalligi — avtomatik bog'lanish: commit #42 ni eslaydi, PR uni yopadi, issue qaysi kod uni hal qilganini ko'rsatadi — hech kim qo'lda havolalar qo'ymaydi. Kontekst almashtirish yo'q: dasturchi bitta joyda ishlaydi. Va hamma narsa loyiha bilan birga saqlanadi — vosita almashtirilganda yoki obuna tugaganda tarix yo'qolmaydi. Kichik va o'rta jamoalar, va deyarli barcha ochiq loyihalar uchun GitHub Issues — yetarli va eng kam ishqalanishli tanlov.
Xulosa
Eslab qoling:
- Issue — bitta vazifa/xato/taklif;
#raqambilan havola - Yaxshi bug report: qadamlar, kutilgan, haqiqiy, muhit, skrinshot
- Shablonlar —
.github/ISSUE_TEMPLATE/ - Labels — tur, ustuvorlik, soha; filtrlash uchun
- Assignee — bitta aniq mas'ul
- Milestone — versiya yoki muddat bo'yicha guruh
- Commit/PR da
#42— havola;Closes #42— avtomatik yopish - Savollar va g'oyalar — Discussions
Keyingi bo'lim
5-bo'lim: Git Tarixini Boshqarish — amend, reset, revert, cherry-pick, bisect va reflog.