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 capabilitiesAppears in: Features section
bug fixes
Bug fixes and error correctionsAppears in: Bug Fixes section
documentation
Documentation changesAppears in: Documentation section
style
Code style changes (formatting, whitespace)Appears in: Style section
refactoring
Code refactoring without changing behaviorAppears in: Refactoring section
performance
Performance improvementsAppears in: Performance section
tests
Test additions or updatesAppears in: Tests section
build
Build system and dependency changesAppears in: Build section
ci/cd
CI/CD configuration changesAppears in: CI/CD section
chores
Maintenance tasks and miscellaneousAppears in: Chores section
Scopes
Scopes provide additional context about what part of the codebase changed:api- API changesui- User interfacecli- Command-line interfacedb- Databaseauth- Authenticationdocs- Documentationtests- Testing
Controlling scope display
Show or hide scopes in release notes:Breaking changes
Breaking changes can be indicated in two ways:Method 1: Exclamation mark
Method 2: BREAKING CHANGE footer
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
Use descriptive commit messages
Use descriptive commit messages
Good:Avoid:
Be consistent with scopes
Be consistent with scopes
Define scopes for your project and use them consistently:
Include context in commit body
Include context in commit body
Reference issues and PRs
Reference issues and PRs
Use breaking changes sparingly
Use breaking changes sparingly
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: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: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