conventional commits tool with fuzzy matcher support, with extra changelog, versioning, validation feature.


git-cz is short for git-commitizen

GitHub Workflow Status

A Conventional commit cli.

git-cz gives tools to work with Conventional Commits.

The tool is still in early development. It provides already the following commands:

  • git-cz changelog: Create a changelog file.
  • git-cz check: Checks if a range of commits is following the convention.
  • git-cz commit: Helps to make conventional commits.
  • git-cz version: Finds out the current or next version.



build from sourceo

cargo install --git

download pre-build binary

download and put git-cz to your PATH env

Git alias

recommand Git alias:

# use "git cc" for quick commit
git config --global 'cz commit'

git config --global 'cz check'

git config --global 'cz changelog'

git config --global 'cz version'

Docker usage

# build the git-cz image
docker build -t git-cz .
# run it on any codebase
docker run -v "$PWD:/tmp" --workdir /tmp --rm git-cz

Use it in .gitlab-ci.yml

If you've created an image and pushed it into your private registry

  stage: test
    name: 80x86/git-cz:latest
    - check



A changelog can be generated using the conventional commits. It is inspired by conventional changelog. Configuration follows the conventional-changelog-config-spec

git-cz changelog >


Check a range of revisions for compliance.

It returns a non zero exit code if some commits are not conventional. This is useful in a pre-push hook.

git-cz check $remote_sha..$local_sha


Helps to make conventional commits. A scope, description, body, breaking change and issues will be prompted.

# commit a new feature and then run git commit with the interactive patch switch
git-cz commit --feat -- --patch


When no options are given it will return the current version. When --bump is provided, the next version will be printed out. Conventional commits are used to calculate the next major, minor or patch. If needed one can provide --major, --minor or --patch to overrule the convention.

git-cz version --bump

It is useful to use it with release tools, such as cargo-release:

cargo release $(git-cz version --bump)


  • [x] automatic notes for breaking changes
  • [x] custom template folder
  • [x] use a .versionrc file
  • [x] limit to a range of versions
  • [x] sort sections in changelog
  • [x] issue references
  • [ ] better documentation
  • [ ] better error handling


  • fuzzy finder powered by Skim

  • original code by convco


Related Works