Kelola pekerjaan tim dengan GitHub Issues: buat bug report, feature request, dan task, organisasikan dengan labels, assignees, dan milestones, lalu hubungkan ke commit dan pull request dengan keyword yang otomatis menutup issue.

Di episode 11 kita membahas Pull Request sebagai pintu gerbang kode masuk ke main. PR menjawab pertanyaan bagaimana kode berubah. Namun sebelum ada PR, sebuah tim harus sepakat dulu apa yang perlu dikerjakan — dan itu adalah wilayah GitHub Issues. Issue adalah unit kerja, wadah diskusi, dan jejak keputusan yang bisa dilacak dari lahir sampai selesai.
Mengapa penting di dunia nyata? Repository yang sehat bukan hanya soal kode yang rapi, tapi juga backlog yang terorganisasi. Tim yang baik tidak menyerahkan semuanya pada ingatan atau chat pribadi — semuanya tercatat di issue: siapa yang mengerjakan, kategori apa, dan kapan harus selesai. Episode ini membahas membuat issue, mengorganisasinya dengan labels, assignees, dan milestones, serta menghubungkannya ke commit dan PR sehingga penutupan issue terjadi otomatis.
Issue adalah entri yang mewakili satu pekerjaan atau diskusi: bisa berupa bug report, feature request, atau task biasa. Setiap issue memiliki nomor unik (misal #12) yang stabil selama repository hidup, sehingga bisa direferensikan dari commit, PR, atau issue lain.
Siklus hidup issue sederhana: dibuat → didiskusikan → ditugaskan → dikerjakan lewat PR → ditutup. Seluruh percakapan dan referensi silang tercatat, membentuk dokumentasi yang bisa ditelusuri bertahun-tahun kemudian.
Buka tab Issues, klik New issue, pilih template bila tersedia, lalu isi title dan body. Menulis body yang baik adalah keterampilan: deskripsi yang kabur menghasilkan implementasi yang keliru.
Struktur yang disarankan untuk tiga jenis issue:
## Deskripsi
Setelah submit form login, pengguna tidak dialihkan ke dashboard.
## Langkah reproduksi
1. Buka /login
2. Isi email dan password valid
3. Klik tombol Masuk
## Hasil yang diharapkan
Dialihkan ke /dashboard
## Lingkungan
Linux, Chrome 120, Git 2.45Tiga alat utama mengubah tumpukan issue menjadi backlog yang tertata:
Labels — kategori berwarna yang menandai jenis issue. GitHub menyediakan label bawaan dan kalian bisa membuat label sendiri:
| Label | Warna | Arti |
|---|---|---|
bug | Merah | Kerusakan fungsi yang harus diperbaiki |
enhancement | Biru | Permintaan fitur baru |
good first issue | Hijau | Cocok untuk kontributor pemula |
security | Hitam | Masalah keamanan, prioritas tinggi |
Assignees — orang yang bertanggung jawab. Satu issue sebaiknya satu assignee untuk menghindari tanggung jawab ganda. Milestones — pengelompokan issue menuju satu tujuan, misalnya rilis v1.3 atau sprint minggu ini, lengkap dengan tenggat waktu.
Dengan kombinasi ini, board berubah dari daftar acak menjadi peta kerja: filter label bug plus milestone "Sprint 12" langsung menampilkan apa yang harus diselesaikan minggu ini.
Labels dan milestones juga bisa dikelola dari terminal. Buat label dengan gh label create dan milestone dengan gh milestone create:
gh label create bug --color "d73a4a" --description "Kerusakan fungsi"
gh label create good-first-issue --color "7057ff"
gh milestone create v1.3 --due-date 2026-09-01Saat mengaitkan issue ke label atau milestone, pastikan pilihannya konsisten dengan aturan tim — misalnya semua issue bertanda bug wajib punya assignee sebelum masuk sprint.
Seluruh alur di atas bisa dijalankan dari terminal dengan gh issue create:
gh issue create \
--title "Bug: tidak dialihkan setelah login" \
--body "Setelah submit form, pengguna tidak menuju dashboard." \
--label "bug" \
--assignee @mePerintah pendukung yang sering dipakai:
gh issue list --label "bug" --state open
gh issue view 12
gh issue close 12 --reason completedSupaya issue tertutup otomatis, gunakan keyword di commit message atau deskripsi PR: Fixes #12, Closes #45, Resolves #89. Saat PR yang berisi keyword itu di-merge ke branch default, issue terkait ditutup otomatis dan tertaut ke PR — tanpa perlu membuka halaman issue.
git commit -m "fix: arahkan pengguna ke dashboard setelah login
Menutup bug redirect setelah autentikasi.
Fixes #12"Saat membuat PR lewat UI, letakkan keyword di bagian yang paling jelas pada deskripsi:
## Ringkasan
Memperbaiki redirect setelah login berhasil.
## Issue terkait
Closes #45Setelah push dan PR dibuat, tambahkan keyword di deskripsi PR bila belum ada. GitHub mendukung banyak bentuk keyword: close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved — semuanya diikuti nomor issue.
Tip
Referensi issue di body PR tidak harus satu-satu. Boleh menulis "Menutup #12 dan #45" dalam satu PR, namun pastikan PR memang menyelesaikan keduanya — jangan menautkan issue hanya demi menutupnya.
Episode ini mengubah GitHub dari tempat menyimpan kode menjadi sistem manajemen kerja: memahami peran Issues untuk bug report, feature request, dan task; mengorganisasi backlog dengan labels, assignees, dan milestones; membuat dan mengelola issue lewat UI maupun gh issue create; serta menutup issue otomatis lewat keyword Fixes, Closes, dan Resolves di commit atau deskripsi PR.
Poin yang harus kalian bawa:
Fixes #12 di commit atau PR menutup issue otomatis saat merge.Semakin banyak orang berkolaborasi di satu repository, semakin penting batasan keamanan. Di episode 13 kita membahas Keamanan Repository & Branch Protection Rules — melindungi main dari merge tanpa persetujuan, mencegah kebocoran API key dan database credential, serta memanfaatkan GitHub Secret Scanning dan Dependabot Alerts. Sampai jumpa di episode 13!