GitHub Issues and Releases
1. What are GitHub Issues?
What is a GitHub Issue?
A GitHub Issue is used to track work related to a repository, such as:
- Bugs
- New features
- Improvements
- Tasks
- Documentation changes
In simple terms:
GitHub Issues are used to record, discuss, assign, and track work that needs to be done.
For example, users report that the login page fails when an incorrect password is entered.
You could create an issue:
Issue #25
Title:
Fix login error handling
Description:
The login page displays an unexpected error
when an invalid password is entered.
Assignee:
Developer A
Label:
bug
Status:
Open
Typical Issue Workflow
Problem / Requirement
↓
Create Issue
↓
Assign Developer
↓
Create Branch
↓
Develop & Commit
↓
Create Pull Request
↓
Review & Merge
↓
Close Issue
For example, create a branch related to issue #25:
git switch -c fix/25-login-error
After completing the change, a Pull Request can reference the issue.
For example:
Fixes #25
When GitHub recognizes a supported closing keyword in the appropriate merged PR context, it can automatically close the linked issue.
Important Issue Features
GitHub Issues support features such as:
Labels
bug
enhancement
documentation
priority-high
Assignees
Specify who is responsible for the issue.
Milestones
Group issues toward a particular goal or release.
Milestone: Version 2.0
Comments
Developers can discuss requirements, bugs, and solutions inside the issue.
Key Points
- Issues are used to track work.
- An issue can represent a bug, feature, task, or improvement.
- Issues can have labels, assignees, milestones, and comments.
- Issues can be linked to Pull Requests.
- Issues provide traceability from requirement/bug to implementation.
- Issues are useful for project collaboration and work management.
2. What are GitHub Releases?
What is a GitHub Release?
A GitHub Release is used to publish and document a specific version of an application or project.
For example:
Version 1.0.0
Version 1.1.0
Version 2.0.0
A release can contain:
- Release version/name
- Release notes
- Associated Git tag
- Binary files or other release assets
- Information about new features and bug fixes
For example:
Release: v2.0.0
What's New:
- Added JWT authentication
- Added Admin dashboard
- Improved article search
Bug Fixes:
- Fixed login validation issue
- Fixed pagination issue
Git Tag and GitHub Release
GitHub Releases are normally associated with Git tags.
Suppose your history is:
A --- B --- C --- D
↑
main
The application is ready for version 1.0.0.
You can create a tag:
git tag -a v1.0.0 -m "Release version 1.0.0"
Push it:
git push origin v1.0.0
Conceptually:
A --- B --- C --- D
↑
v1.0.0
On GitHub, you can create a Release associated with v1.0.0.
Git Commit
↓
Git Tag
v1.0.0
↓
GitHub Release
↓
Release Notes + Assets
Release Assets
A GitHub Release can include downloadable files known as release assets.
For example:
MyApplication-v1.0.0.zip
Setup.exe
documentation.pdf
For a .NET application, a CI/CD process could build:
Source Code
↓
dotnet publish
↓
Application package
↓
GitHub Release Asset
The exact release process depends on the project.
Issues vs Releases
| GitHub Issues | GitHub Releases |
|---|---|
| Track work | Publish versions |
| Bugs, tasks, features | Application/project releases |
| Used during development | Used when distributing/documenting a version |
| Can have assignees | Associated with a tag |
| Can have labels | Can contain release notes |
| Can be linked to PRs | Can contain downloadable assets |
Simple Project Flow
A practical flow could be:
Issue
↓
Create Feature/Bugfix Branch
↓
Development
↓
Commit
↓
Pull Request
↓
Code Review
↓
Merge into main
↓
Tag
v1.0.0
↓
GitHub Release
↓
Release Notes / Assets
Key Points
GitHub Issues
Issues track what needs to be done.
Examples:
Bug
Feature
Task
Improvement
GitHub Releases
Releases publish and document a specific version of the project.
Examples:
v1.0.0
v1.1.0
v2.0.0
Easy Interview Answer
GitHub Issues are used to track bugs, features, tasks, and other project work. GitHub Releases are used to publish and document specific versions of an application, usually associated with Git tags, and they can include release notes and downloadable assets.