commitizen 4.9.1


pip install commitizen

  Latest version

Released: Sep 10, 2025


Meta
Author: Santiago Fraire
Maintainer: Wei Lee
Requires Python: >=3.9,<4.0

Classifiers

Development Status
  • 5 - Production/Stable

Environment
  • Console

Intended Audience
  • Developers

Natural Language
  • English

Operating System
  • OS Independent

Programming Language
  • Python
  • Python :: 3
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13
  • Python :: Implementation :: CPython

License
  • OSI Approved :: MIT License

GitHub Workflow Status Conventional Commits PyPI Package latest release PyPI Package download count (per month) Supported versions Conda Version homebrew Codecov pre-commit

Using Commitizen cli


Commitizen Documentation Site


About

Commitizen is a powerful release management tool that helps teams maintain consistent and meaningful commit messages while automating version management.

What Commitizen Does

By enforcing standardized commit conventions (defaulting to Conventional Commits), Commitizen helps teams:

  • Write clear, structured commit messages
  • Automatically manage version numbers using semantic versioning
  • Generate and maintain changelogs
  • Streamline the release process

Key Benefits

With just a simple cz bump command, Commitizen handles:

  1. Version Management: Automatically bumps version numbers and updates version files based on your commit history
  2. Changelog Generation: Creates and updates changelogs following the Keep a changelog format
  3. Commit Standardization: Enforces consistent commit message formats across your team

This standardization makes your commit history more readable and meaningful, while the automation reduces manual work and potential errors in the release process.

Features

Getting Started

Requirements

Before installing Commitizen, ensure you have:

Installation

Global Installation (Recommended)

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

Project-Specific Installation

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

Basic Commands

Initialize Commitizen

To get started, you'll need to set up your configuration. You have two options:

  1. Use the interactive setup:
cz init
  1. Manually create a configuration file (.cz.toml or cz.toml):
[tool.commitizen]
version = "0.1.0"
update_changelog_on_bump = true

Create Commits

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.

Version Management

The most common command you'll use is:

cz bump

This command:

  • Bumps your project's version
  • Creates a git tag
  • Updates the changelog (if update_changelog_on_bump is enabled)
  • Updates version files

You can customize:

For all available options, see the bump command documentation.

Advanced Usage

Get Project Version

# 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.

Pre-commit Integration

Commitizen can automatically validate your commit messages using pre-commit hooks.

  1. Add to your .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]
  1. Install the hooks:
pre-commit install --hook-type commit-msg --hook-type pre-push
Hook Recommended Stage
commitizen commit-msg
commitizen-branch pre-push

Note: Replace master with the latest tag to avoid warnings. You can automatically update this with:

pre-commit autoupdate

For more details about commit validation, see the check command documentation.

Help & Reference

Command Line Interface

Commitizen provides a comprehensive CLI with various commands. Here's the complete reference:

cz --help

Quick 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 -

Additional Resources

Getting Help

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.

Setting up bash completion

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.

Supported Shells

  • Bash: Full support
  • Zsh: Limited support
  • Fish: Limited support
  • Tcsh: Limited support

Installation Methods

Global Installation (Recommended)

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

User-Specific Installation

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

Temporary Installation

For one-time activation in your current shell session:

# Activate completion for current session only
eval "$(register-python-argcomplete cz)"

Verification

After installation, you can verify the completion is working by:

  1. Opening a new terminal session
  2. Typing cz followed by a space and pressing TAB twice
  3. You should see a list of available commands

For more detailed information about argcomplete configuration and troubleshooting, visit the argcomplete documentation.

Sponsors

These are our cool sponsors!

4.9.1 Sep 10, 2025
4.9.0 Sep 09, 2025
4.8.4 Sep 05, 2025
4.8.3 Jun 09, 2025
4.8.2 May 22, 2025
4.8.1 May 22, 2025
4.8.0 May 20, 2025
4.7.2 May 18, 2025
4.7.1 May 16, 2025
4.7.0 May 10, 2025
4.6.3 May 07, 2025
4.6.2 May 05, 2025
4.6.1 May 05, 2025
4.6.0 Apr 13, 2025
4.5.1 Apr 09, 2025
4.5.0 Apr 04, 2025
4.4.1 Mar 02, 2025
4.4.0 Mar 02, 2025
4.3.0 Feb 28, 2025
4.2.2 Feb 18, 2025
4.2.1 Feb 08, 2025
4.2.0 Feb 07, 2025
4.1.1 Jan 26, 2025
4.1.0 Dec 06, 2024
4.0.0 Nov 26, 2024
3.31.0 Nov 16, 2024
3.30.1 Nov 10, 2024
3.30.0 Oct 23, 2024
3.29.1 Sep 26, 2024
3.29.0 Aug 11, 2024
3.28.0 Jul 17, 2024
3.27.0 May 22, 2024
3.26.2 May 22, 2024
3.26.1 May 22, 2024
3.26.0 May 18, 2024
3.25.0 Apr 30, 2024
3.24.0 Apr 18, 2024
3.23.0 Apr 18, 2024
3.22.0 Apr 11, 2024
3.21.3 Mar 30, 2024
3.21.2 Mar 30, 2024
3.21.1 Mar 30, 2024
3.21.0 Mar 30, 2024
3.20.0 Mar 19, 2024
3.19.0 Mar 19, 2024
3.18.4 Mar 14, 2024
3.18.3 Mar 11, 2024
3.18.2 Mar 11, 2024
3.18.1 Mar 11, 2024
3.18.0 Mar 07, 2024
3.17.2 Mar 07, 2024
3.17.1 Mar 07, 2024
3.17.0 Mar 06, 2024
3.16.0 Feb 26, 2024
3.15.0 Feb 17, 2024
3.14.1 Feb 04, 2024
3.14.0 Feb 01, 2024
3.13.0 Dec 03, 2023
3.12.0 Oct 18, 2023
3.11.0 Oct 17, 2023
3.10.1 Oct 14, 2023
3.10.0 Sep 25, 2023
3.9.1 Sep 22, 2023
3.9.0 Sep 15, 2023
3.8.2 Sep 09, 2023
3.8.1 Sep 08, 2023
3.8.0 Sep 05, 2023
3.7.1 Sep 04, 2023
3.7.0 Aug 26, 2023
3.6.0 Aug 01, 2023
3.5.4 Jul 29, 2023
3.5.3 Jul 15, 2023
3.5.2 Jun 25, 2023
3.5.1 Jun 24, 2023
3.5.0 Jun 23, 2023
3.4.1 Jun 23, 2023
3.4.0 Jun 20, 2023
3.3.0 Jun 13, 2023
3.2.2 May 11, 2023
3.2.1 May 03, 2023
3.2.0 May 01, 2023
3.1.1 Apr 28, 2023
3.1.0 Apr 25, 2023
3.0.1 Apr 23, 2023
3.0.0 Apr 23, 2023
2.42.1 Feb 25, 2023
2.42.0 Feb 11, 2023
2.41.0 Feb 08, 2023
2.40.0 Jan 23, 2023
2.39.1 Dec 31, 2022
2.39.0 Dec 31, 2022
2.38.0 Dec 12, 2022
2.37.1 Nov 30, 2022
2.37.0 Oct 28, 2022
2.36.0 Oct 28, 2022
2.35.0 Sep 23, 2022
2.34.0 Sep 19, 2022
2.33.1 Sep 16, 2022
2.33.0 Sep 15, 2022
2.32.7 Sep 14, 2022
2.32.6 Sep 14, 2022
2.32.5 Sep 10, 2022
2.32.4 Sep 08, 2022
2.32.3 Sep 07, 2022
2.32.2 Aug 22, 2022
2.32.1 Aug 21, 2022
2.32.0 Aug 21, 2022
2.31.0 Aug 14, 2022
2.30.0 Aug 14, 2022
2.29.6 Aug 13, 2022
2.29.5 Aug 07, 2022
2.29.4 Aug 05, 2022
2.29.3 Aug 02, 2022
2.29.2 Jul 27, 2022
2.29.1 Jul 26, 2022
2.29.0 Jul 22, 2022
2.28.1 Jul 22, 2022
2.28.0 Jul 03, 2022
2.27.1 May 22, 2022
2.27.0 May 16, 2022
2.26.0 May 14, 2022
2.25.0 May 10, 2022
2.24.0 Apr 15, 2022
2.23.0 Mar 29, 2022
2.22.0 Mar 29, 2022
2.21.2 Feb 22, 2022
2.21.1 Feb 22, 2022
2.21.0 Feb 17, 2022
2.20.5 Feb 07, 2022
2.20.4 Jan 17, 2022
2.20.3 Dec 20, 2021
2.20.2 Dec 14, 2021
2.20.1 Dec 14, 2021
2.20.0 Oct 06, 2021
2.19.0 Sep 27, 2021
2.18.2 Sep 27, 2021
2.18.1 Sep 12, 2021
2.18.0 Aug 13, 2021
2.17.13 Jul 14, 2021
2.17.12 Jul 06, 2021
2.17.11 Jun 24, 2021
2.17.10 Jun 22, 2021
2.17.9 Jun 11, 2021
2.17.8 May 28, 2021
2.17.7 May 26, 2021
2.17.6 May 06, 2021
2.17.5 May 06, 2021
2.17.4 Apr 22, 2021
2.17.3 Apr 19, 2021
2.17.2 Apr 10, 2021
2.17.1 Apr 10, 2021
2.17.0 Apr 02, 2021
2.16.0 Mar 08, 2021
2.15.3 Feb 26, 2021
2.15.2 Feb 24, 2021
2.15.1 Feb 21, 2021
2.15.0 Feb 21, 2021
2.14.2 Feb 06, 2021
2.14.1 Feb 02, 2021
2.14.0 Jan 20, 2021
2.13.0 Jan 01, 2021
2.12.1 Dec 30, 2020
2.12.0 Dec 30, 2020
2.11.1 Dec 16, 2020
2.11.0 Dec 10, 2020
2.10.0 Dec 02, 2020
2.9.0 Dec 02, 2020
2.8.2 Nov 21, 2020
2.8.1 Nov 21, 2020
2.8.0 Nov 15, 2020
2.7.0 Nov 14, 2020
2.6.0 Nov 04, 2020
2.5.0 Nov 04, 2020
2.4.2 Oct 26, 2020
2.4.1 Oct 04, 2020
2.4.0 Sep 18, 2020
2.3.1 Sep 07, 2020
2.3.0 Sep 07, 2020
2.1.0 Aug 06, 2020
2.0.2 Aug 03, 2020
2.0.1 Aug 02, 2020
2.0.0 Jul 26, 2020
1.25.0 Jul 26, 2020
1.24.0 Jul 26, 2020
1.23.3 Jul 25, 2020
1.23.2 Jul 25, 2020
1.23.1 Jul 25, 2020
1.23.0 Jun 14, 2020
1.22.3 Jun 10, 2020
1.22.2 May 29, 2020
1.22.1 May 23, 2020
1.22.0 May 13, 2020
1.21.0 May 09, 2020
1.20.0 May 06, 2020
1.19.3 May 04, 2020
1.19.2 May 03, 2020
1.19.1 May 03, 2020
1.19.0 May 02, 2020
1.18.3 Apr 22, 2020
1.18.2 Apr 22, 2020
1.18.1 Apr 16, 2020
1.18.0 Apr 13, 2020
1.17.1 Mar 24, 2020
1.17.0 Mar 15, 2020
1.16.4 Mar 03, 2020
1.16.3 Feb 20, 2020
1.16.2 Feb 01, 2020
1.16.1 Feb 01, 2020
1.16.0 Jan 21, 2020
1.15.1 Jan 20, 2020
1.15.0 Jan 20, 2020
1.14.2 Jan 14, 2020
1.14.1 Jan 11, 2020
1.14.0 Jan 06, 2020
1.13.1 Dec 31, 2019
1.13.0 Dec 30, 2019
1.12.0 Dec 30, 2019
1.11.0 Dec 15, 2019
1.10.3 Dec 29, 2019
1.10.2 Dec 27, 2019
1.10.1 Dec 10, 2019
1.10.0 Nov 28, 2019
1.9.2 Nov 23, 2019
1.9.1 Nov 23, 2019
1.9.0 Nov 22, 2019
1.8.0 Nov 12, 2019
1.7.0 Nov 08, 2019
1.6.0 Nov 05, 2019
1.5.1 Jun 04, 2019
1.5.0 May 11, 2019
1.4.0 Apr 26, 2019
1.3.0 Apr 24, 2019
1.2.1 Apr 21, 2019
1.2.0 Apr 19, 2019
1.1.1 Apr 18, 2019
1.1.0 Apr 14, 2019
1.0.0 Mar 01, 2019
1.0.0b2 Jan 18, 2019
1.0.0b1 Jan 17, 2019
0.9.11 Dec 17, 2018
0.9.10 Sep 22, 2018
0.9.9 Sep 22, 2018
0.9.8 Sep 22, 2018
0.9.7 Sep 22, 2018
0.9.6 Sep 19, 2018
0.9.5 Aug 24, 2018
0.9.3 Jul 28, 2018
0.9.2 Nov 11, 2017
0.9.1 Nov 11, 2017
0.9.0 Nov 08, 2017
0.8.6 Nov 08, 2017
0.8.5 Nov 08, 2017
0.8.4 Nov 08, 2017

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras: None
Dependencies:
argcomplete (<3.7,>=1.12.1)
charset-normalizer (<4,>=2.1.0)
colorama (<1.0,>=0.4.1)
decli (<1.0,>=0.6.0)
deprecated (<2,>=1.2.13)
importlib-metadata (<8.7.0,>=8.0.0)
jinja2 (>=2.10.3)
packaging (>=19)
prompt_toolkit (!=3.0.52)
pyyaml (>=3.08)
questionary (<3.0,>=2.0)
termcolor (<4.0.0,>=1.1.0)
tomlkit (<1.0.0,>=0.5.3)
typing-extensions (<5.0.0,>=4.0.1)