Need help with commitizen?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

commitizen-tools
496 Stars 76 Forks MIT License 795 Commits 41 Opened issues

Description

Create committing rules for projects :rocket: auto bump versions :arrow_up: and auto changelog generation :open_file_folder:

Services available

!
?

Need anything else?

Contributors list

# 52,894
Git
commiti...
HTML
convent...
257 commits
# 81,560
Git
Shell
GraphQL
convent...
215 commits
# 2,352
steam
laravel...
laravel...
advent-...
73 commits
# 352,277
Git
commiti...
Shell
HTML
15 commits
# 414,620
Git
commiti...
Shell
HTML
9 commits
# 432,328
Git
commiti...
Shell
HTML
7 commits
# 110,676
GitHub
React
Visual ...
Electro...
7 commits
# 88,941
Git
thumbna...
lightbo...
Shell
6 commits
# 377,332
Git
sso-log...
oauth2
HTML
6 commits
# 388,529
Git
commiti...
Shell
python3
4 commits
# 306,548
Git
commiti...
HTML
Shell
3 commits
# 175,740
Git
python3
environ...
Flask
3 commits
# 206,209
python3
google-...
osx
Google
2 commits
# 71,002
backup-...
golang
k8s
Docker
2 commits
# 104,516
fluent-...
python-...
python-...
aws-lam...
2 commits
# 158,778
commiti...
Emacs
emacs-l...
convent...
1 commit
# 624,967
Git
commiti...
HTML
Shell
1 commit
# 111,191
Git
GraphQL
kafka-s...
kafka
1 commit
# 316,547
Git
commiti...
Shell
HTML
1 commit
# 84,663
Git
C#
Shell
music-l...
1 commit

Github Actions Conventional Commits PyPI Package latest release PyPI Package download count (per month) Supported versions homebrew Codecov

Using commitizen cli


Documentation: https://commitizen-tools.github.io/commitizen/


About

Commitizen is a tool designed for teams.

Its main purpose is to define a standard way of committing rules and communicating it (using the cli provided by commitizen).

The reasoning behind it is that it is easier to read, and enforces writing descriptive commits.

Besides that, having a convention on your commits makes it possible to parse them and use them for something else, like generating automatically the version or a changelog.

Commitizen features

Requirements

Python 3.6+

Git

1.8.5.2
+

Installation

Global installation

sudo pip3 install -U Commitizen

Python project

You can add it to your local project using one of these:

pip install -U commitizen
poetry add commitizen --dev

macOS

On macOS, it can also be installed via homebrew:

brew install commitizen

Usage

Committing

Run in your terminal

cz commit

or the shortcut

cz c

Integrating with Pre-commit

Commitizen can lint your commit message for you with

cz check
. You can integrate this in your pre-commit config with:
---
repos:
  - repo: https://github.com/commitizen-tools/commitizen
    rev: master
    hooks:
      - id: commitizen
        stages: [commit-msg]

After the configuration is added, you'll need to run

pre-commit install --hook-type commit-msg

Read more about the

check
command here.

Help

$ cz --help
usage: cz [-h] [--debug] [-n NAME] [--version]
          {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
          ...

Commitizen is a cli tool to generate conventional commits. For more information about the topic go to https://conventionalcommits.org/

optional arguments: -h, --help show this help message and exit --debug use debug mode -n NAME, --name NAME use the given commitizen (default: cz_conventional_commits) --version get the version of the installed commitizen

commands: {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version} init init commitizen configuration commit (c) create new commit ls show available commitizens example show commit example info show information about the cz schema show commit schema bump bump semantic version based on the git log changelog (ch) generate changelog (note that it will overwrite existing file) check validates that a commit message matches the commitizen schema version get the version of the installed commitizen or the current project (default: installed commitizen)

Setting up bash completion

When using bash as your shell (limited support for zsh, fish, and tcsh is available), Commitizen can use argcomplete for auto-completion. For this argcomplete needs to be enabled.

argcomplete is installed when you install Commitizen since it's a dependency.

If Commitizen is installed globally, global activation can be executed:

sudo activate-global-python-argcomplete

For permanent (but not global) Commitizen activation, use:

register-python-argcomplete cz >> ~/.bashrc

For one-time activation of argcomplete for Commitizen only, use:

eval "$(register-python-argcomplete cz)"

For further information on activation, please visit the argcomplete website.

Third-Party Commitizen Templates

See Third-Party Commitizen Templates.

FAQ

Why are
revert
and
chore
valid types in the check pattern of cz conventional_commits but not types we can select?

revert
and
chore
are added to the "pattern" in
cz check
in order to prevent backward errors, but officially they are not part of conventional commits, we are using the latest types from Angular (they used to but were removed). However, you can create a customized
cz
with those extra types. (See Customization)

See more discussion in issue #142 and #36

How to handle revert commits?

git revert --no-commit 
git commit -m "revert: foo bar"

Contributing

See Contributing

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.