Create committing rules for projects :rocket: auto bump versions :arrow_up: and auto changelog generation :open_file_folder:
3,505
stars
2,487
commits
Python
primary language
Sep 4, 2026
updated

Commitizen is a powerful release management tool that helps teams maintain consistent and meaningful commit messages while automating version management.
By enforcing standardized commit conventions (defaulting to Conventional Commits), Commitizen helps teams:
With just a simple cz bump command, Commitizen handles:
This standardization makes your commit history more readable and meaningful, while the automation reduces manual work and potential errors in the release process.
Before installing Commitizen, ensure you have:
The recommended way to install Commitizen is using pipx or uv, which ensures a clean, isolated installation:
Using pipx:
# Install Commitizen
pipx install commitizen
# Keep it updated
pipx upgrade commitizen
Using uv:
# Install commitizen
uv tool install commitizen
# Keep it updated
uv tool upgrade commitizen
(For macOS users) Using Homebrew:
brew install commitizen
You can add Commitizen to your Python project using any of these package managers:
Using pip:
pip install -U commitizen
Using conda:
conda install -c conda-forge commitizen
Using Poetry:
# For Poetry >= 1.2.0
poetry add commitizen --group dev
# For Poetry < 1.2.0
poetry add commitizen --dev
Using uv:
uv add --dev commitizen
Using pdm:
pdm add -d commitizen
To get started, run the cz init command. This will guide you through the process of creating a configuration file with your preferred settings.
Create standardized commits using:
cz commit
# or use the shortcut
cz c
To sign off your commits:
cz commit -- --signoff
# or use the shortcut
cz commit -- -s
For more commit options, run cz commit --help.
The most common command you'll use is:
cz bump
This command:
update_changelog_on_bump is enabled)You can customize:
For all available options, see the bump command documentation.
# Get your project's version (instead of Commitizen's version)
cz version -p
# Preview changelog changes
cz changelog --dry-run "$(cz version -p)"
This command is particularly useful for automation scripts and CI/CD pipelines.
For example, you can use the output of the command cz changelog --dry-run "$(cz version -p)" to notify your team about a new release in Slack.
Commitizen can automatically validate your commit messages using pre-commit hooks.
.pre-commit-config.yaml:---
repos:
- repo: https://github.com/commitizen-tools/commitizen
rev: master # Replace with latest tag
hooks:
- id: commitizen
- id: commitizen-branch
stages: [pre-push]
prek install --hook-type commit-msg --hook-type pre-push
| Hook | Recommended Stage |
|---|---|
| commitizen | commit-msg |
| commitizen-branch | pre-push |
Note: Replace
masterwith the latest tag to avoid warnings. You can automatically update this with:prek autoupdate
For more details about commit validation, see the check command documentation.
Commitizen provides a comprehensive CLI with various commands. Here's the complete reference:
| Command | Description | Alias |
|---|---|---|
cz init | Initialize Commitizen configuration | - |
cz commit | Create a new commit | cz c |
cz bump | Bump version and update changelog | - |
cz changelog | Generate changelog | cz ch |
cz check | Validate commit messages | - |
cz version | Show version information | - |
For each command, you can get detailed help by adding --help:
cz commit --help
cz bump --help
cz changelog --help
For more details, visit our documentation site.
Commitizen supports command-line completion through argcomplete, which is automatically installed as a dependency. This feature provides intelligent auto-completion for all Commitizen commands and options.
If you installed Commitizen globally (e.g., using pipx or brew), you can enable global completion:
# Enable global completion for all Python applications
sudo activate-global-python-argcomplete
For a user-specific installation that persists across sessions:
# Add to your shell's startup file (e.g., ~/.bashrc, ~/.zshrc)
register-python-argcomplete cz >> ~/.bashrc
For one-time activation in your current shell session:
# Activate completion for current session only
eval "$(register-python-argcomplete cz)"
After installation, you can verify the completion is working by:
cz followed by a space and pressing TAB twiceFor more detailed information about argcomplete configuration and troubleshooting, visit the argcomplete documentation.
These are our cool sponsors!
(top 30 of 158)
Python
100.0%
Create committing rules for projects :rocket: auto bump versions :arrow_up: and auto changelog generation :open_file_folder:
3,505
stars
2,487
commits
Python
primary language
Sep 4, 2026
updated

Commitizen is a powerful release management tool that helps teams maintain consistent and meaningful commit messages while automating version management.
By enforcing standardized commit conventions (defaulting to Conventional Commits), Commitizen helps teams:
With just a simple cz bump command, Commitizen handles:
This standardization makes your commit history more readable and meaningful, while the automation reduces manual work and potential errors in the release process.
Before installing Commitizen, ensure you have:
The recommended way to install Commitizen is using pipx or uv, which ensures a clean, isolated installation:
Using pipx:
# Install Commitizen
pipx install commitizen
# Keep it updated
pipx upgrade commitizen
Using uv:
# Install commitizen
uv tool install commitizen
# Keep it updated
uv tool upgrade commitizen
(For macOS users) Using Homebrew:
brew install commitizen
You can add Commitizen to your Python project using any of these package managers:
Using pip:
pip install -U commitizen
Using conda:
conda install -c conda-forge commitizen
Using Poetry:
# For Poetry >= 1.2.0
poetry add commitizen --group dev
# For Poetry < 1.2.0
poetry add commitizen --dev
Using uv:
uv add --dev commitizen
Using pdm:
pdm add -d commitizen
To get started, run the cz init command. This will guide you through the process of creating a configuration file with your preferred settings.
Create standardized commits using:
cz commit
# or use the shortcut
cz c
To sign off your commits:
cz commit -- --signoff
# or use the shortcut
cz commit -- -s
For more commit options, run cz commit --help.
The most common command you'll use is:
cz bump
This command:
update_changelog_on_bump is enabled)You can customize:
For all available options, see the bump command documentation.
# Get your project's version (instead of Commitizen's version)
cz version -p
# Preview changelog changes
cz changelog --dry-run "$(cz version -p)"
This command is particularly useful for automation scripts and CI/CD pipelines.
For example, you can use the output of the command cz changelog --dry-run "$(cz version -p)" to notify your team about a new release in Slack.
Commitizen can automatically validate your commit messages using pre-commit hooks.
.pre-commit-config.yaml:---
repos:
- repo: https://github.com/commitizen-tools/commitizen
rev: master # Replace with latest tag
hooks:
- id: commitizen
- id: commitizen-branch
stages: [pre-push]
prek install --hook-type commit-msg --hook-type pre-push
| Hook | Recommended Stage |
|---|---|
| commitizen | commit-msg |
| commitizen-branch | pre-push |
Note: Replace
masterwith the latest tag to avoid warnings. You can automatically update this with:prek autoupdate
For more details about commit validation, see the check command documentation.
Commitizen provides a comprehensive CLI with various commands. Here's the complete reference:
| Command | Description | Alias |
|---|---|---|
cz init | Initialize Commitizen configuration | - |
cz commit | Create a new commit | cz c |
cz bump | Bump version and update changelog | - |
cz changelog | Generate changelog | cz ch |
cz check | Validate commit messages | - |
cz version | Show version information | - |
For each command, you can get detailed help by adding --help:
cz commit --help
cz bump --help
cz changelog --help
For more details, visit our documentation site.
Commitizen supports command-line completion through argcomplete, which is automatically installed as a dependency. This feature provides intelligent auto-completion for all Commitizen commands and options.
If you installed Commitizen globally (e.g., using pipx or brew), you can enable global completion:
# Enable global completion for all Python applications
sudo activate-global-python-argcomplete
For a user-specific installation that persists across sessions:
# Add to your shell's startup file (e.g., ~/.bashrc, ~/.zshrc)
register-python-argcomplete cz >> ~/.bashrc
For one-time activation in your current shell session:
# Activate completion for current session only
eval "$(register-python-argcomplete cz)"
After installation, you can verify the completion is working by:
cz followed by a space and pressing TAB twiceFor more detailed information about argcomplete configuration and troubleshooting, visit the argcomplete documentation.
These are our cool sponsors!
(top 30 of 158)
Python
100.0%