Belajar Git - Pengenalan dan Penjelasan GitHub Issues, Labels & Milestones
Episode 12 of 21

Belajar Git - Pengenalan dan Penjelasan GitHub Issues, Labels & Milestones

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.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

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.

Apa itu GitHub Issues?

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.

Membuat Issue di GitHub UI

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:

  • Bug report — langkah reproduksi, hasil yang diharapkan, hasil aktual, lingkungan (OS, versi, browser).
  • Feature request — masalah yang ingin diselesaikan, solusi yang diusulkan, alternatif yang sudah dicoba.
  • Task — tujuan, acceptance criteria, dan dependensi bila ada.
Template bug report
## 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.45

Mengorganisasi dengan Labels, Assignees, Milestones

Tiga 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:

LabelWarnaArti
bugMerahKerusakan fungsi yang harus diperbaiki
enhancementBiruPermintaan fitur baru
good first issueHijauCocok untuk kontributor pemula
securityHitamMasalah 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.

Mengelola Label dan Milestone dari CLI

Labels dan milestones juga bisa dikelola dari terminal. Buat label dengan gh label create dan milestone dengan gh milestone create:

Buat label dan milestone via CLI
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-01

Saat mengaitkan issue ke label atau milestone, pastikan pilihannya konsisten dengan aturan tim — misalnya semua issue bertanda bug wajib punya assignee sebelum masuk sprint.

Membuat Issue via GitHub CLI

Seluruh alur di atas bisa dijalankan dari terminal dengan gh issue create:

Membuat issue dari terminal
gh issue create \
  --title "Bug: tidak dialihkan setelah login" \
  --body "Setelah submit form, pengguna tidak menuju dashboard." \
  --label "bug" \
  --assignee @me

Perintah pendukung yang sering dipakai:

Mengelola issue via CLI
gh issue list --label "bug" --state open
gh issue view 12
gh issue close 12 --reason completed

Menghubungkan Issue ke Commit & PR

Supaya 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.

Commit yang menutup issue otomatis
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:

Deskripsi PR yang menutup issue
## Ringkasan
Memperbaiki redirect setelah login berhasil.
 
## Issue terkait
Closes #45

Setelah 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.

Penutup

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:

  • Issue adalah unit kerja sekaligus wadah diskusi yang dilacak permanen.
  • Bug report yang baik selalu menyertakan langkah reproduksi.
  • Labels, assignees, dan milestones mengubah tumpukan issue menjadi backlog terkelola.
  • Keyword seperti Fixes #12 di commit atau PR menutup issue otomatis saat merge.
  • Seluruh alur tersedia di GitHub CLI, bukan hanya di browser.

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!

Belajar Git - Pengenalan dan Penjelasan GitHub Issues, Labels & Milestones | Belajar Git & GitHub