Skip to main content

Overview

GitReleaseGen automatically categorizes commits based on the Conventional Commits specification. This structured format makes release notes more organized and meaningful.
While GitReleaseGen works with any commit format, using Conventional Commits produces the best results with automatic categorization and breaking change detection.

Conventional Commits format

The basic structure of a Conventional Commit:

Example commits

Commit types

GitReleaseGen recognizes these commit types and organizes them into sections:
features
New features or capabilities
Appears in: Features section
bug fixes
Bug fixes and error corrections
Appears in: Bug Fixes section
documentation
Documentation changes
Appears in: Documentation section
style
Code style changes (formatting, whitespace)
Appears in: Style section
refactoring
Code refactoring without changing behavior
Appears in: Refactoring section
performance
Performance improvements
Appears in: Performance section
tests
Test additions or updates
Appears in: Tests section
build
Build system and dependency changes
Appears in: Build section
ci/cd
CI/CD configuration changes
Appears in: CI/CD section
chores
Maintenance tasks and miscellaneous
Appears in: Chores section

Scopes

Scopes provide additional context about what part of the codebase changed:
Common scopes:
  • api - API changes
  • ui - User interface
  • cli - Command-line interface
  • db - Database
  • auth - Authentication
  • docs - Documentation
  • tests - Testing
Choose scopes that make sense for your project. Consistency is more important than having many scopes.

Controlling scope display

Show or hide scopes in release notes:

Breaking changes

Breaking changes can be indicated in two ways:

Method 1: Exclamation mark

Both methods create a Breaking Changes section in release notes.
Breaking changes appear prominently in release notes to alert users about incompatible changes.

Examples by category

Features

Bug fixes

Documentation

Refactoring

Complete example workflow

Here’s how Conventional Commits work in a real project:
1

Make changes and commit

2

Generate release notes

3

Review organized output

Commits are automatically organized into sections based on their type.

Best practices

Good:
Avoid:
Define scopes for your project and use them consistently:
Only mark commits as breaking when they truly require user action:

Converting existing commits

If your project doesn’t use Conventional Commits:

Option 1: Start today

Begin using Conventional Commits for new commits while keeping existing history as-is:

Option 2: Rewrite history (use with caution)

For personal projects or before pushing:
Never rewrite history on shared branches. Only do this for private work.

Option 3: Manual categorization

GitReleaseGen does its best to categorize non-conventional commits, but results may vary.

Integration with GitReleaseGen

Automatic categorization

Breaking change detection

Tools and resources

Conventional Commits spec

Official specification and guidelines

Commitlint

Lint commit messages in CI/CD

Commitizen

Interactive commit message helper

Git hooks

Enforce format with pre-commit hooks

Commitlint integration

Enforce Conventional Commits in your project:
Now commits must follow Conventional Commits format:

Next steps

Examples

See Conventional Commits in action

CLI reference

Learn about scope display options

GitHub integration

Link commits to pull requests

Configuration

Customize commit processing