Skip to main content
← Back to course

Issues: Tracking Work and Bugs

An Issue is GitHub's built-in tracker for bugs, feature requests, and tasks — living directly alongside your code instead of in a separate tool.

A real GitHub Issues list, showing open issues with labels and assignment status

Create an Issue from the repository's Issues tab — a title, a description, and optionally labels, an assignee, and a linked milestone. Simple by default, but flexible enough for real project tracking without needing a separate tool for small-to-medium projects.

Labels categorize and filter issuesbug, enhancement, documentation, good first issue are common defaults, and you can define custom ones. Filtering by label turns a large issue list into exactly the subset you're looking for.

Closing an issue automatically via a commit message or PR is a genuinely useful habit. Writing Fixes #42 (or Closes #42) in a commit message or PR description automatically closes that issue the moment the commit/PR lands on the default branch — keeping your issue tracker accurate without a manual step you might forget.

Issue templates standardize bug reports and feature requests. Like PR templates (from the Pull Requests course), a repository can define issue templates (.github/ISSUE_TEMPLATE/) that pre-fill structure — for a bug report, prompting for reproduction steps and expected vs. actual behavior, rather than relying on an unstructured description.

Cross-referencing is automatic. Mention #42 anywhere in a comment, commit, or PR, and GitHub automatically links to that issue — and shows a reference back on the issue itself, building a genuinely useful web of related context without manual linking.

Why this matters for you

Keeping "what needs to be done" directly attached to the code it affects — rather than in a disconnected tracking tool — is a real, practical advantage of using GitHub's built-in tracker for small-to-medium projects.

▶️ Before the next lesson

Create one real Issue in a repository you have access to — even something small — and practice writing Fixes #<number> in a commit message that would resolve it (you don't need to actually merge it yet).