Issue — loyihada muammo bildirish, label, assignee, milestone

~15 daq · Git · GitHub bilan ishlash

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 #15 deb 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; #raqam bilan 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.