git-cliff
What it is and what it does
git-cliff is a changelog generator that reads your Git commit history and produces formatted changelog files. It parses commits using conventional commit conventions by default, but also supports regex-powered custom parsers to extract structured information from your commit messages. The generated changelog is templated and configurable, so you can match your project's desired format and structure.
The package is distributed as a compiled Rust binary wrapped for Python, making it a command-line tool rather than a library for programmatic use. It's designed for release management workflows where you want to automatically generate release notes from your commit history without manual curation.
Use it for:
- Automate changelog generation during CI/CD release pipelines to keep release notes in sync with commits.
- Parse monorepo commits with custom regex patterns to generate separate changelogs per package.
- Generate formatted release notes from conventional commits to enforce consistent commit message standards.
- Create templated changelogs that group commits by type (features, fixes, breaking changes) automatically.
- Integrate changelog generation into your release workflow to reduce manual documentation effort.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
git-cliff generates changelog files from Git history using conventional commits and customizable regex parsers, with templating to match your desired format.
Yes. The package is actively maintained, has no known vulnerabilities, is permissively licensed, and solves a real problem in release automation. The medium install friction (platform-specific wheels) is a minor trade-off for a compiled tool. Install it if you need automated changelog generation from Git history.
Install
git-cliff on PyPI
pip
pip install git-cliffuv
uv add git-cliffpoetry
poetry add git-cliffInstalling git-cliff
Before you install
Medium install friction due to platform-specific wheels (compiled Rust binary), but the package is actively maintained with a recent release and no known vulnerabilities.
License in practice
Licensed under Apache License 2.0 or MIT at your option—both permissive licenses with no restrictions on commercial or private use.
Quickstart
pip install git-cliff
git-cliff --init
git-cliff
Requires Git to be installed and available in PATH; operates on the current Git repository.
Verify before relying
- Whether the Python package is a wrapper around the Rust binary or a pure Python implementation.
- Whether custom parsers support all regex features or have limitations.
- Performance characteristics on repositories with very large commit histories.
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (>=3.7) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 110 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 216,743/month — #9,372 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: git_cliff-2.13.1-py3-none-macosx_10_12_x86_64.whl; git_cliff-2.13.1-py3-none-macosx_11_0_arm64.whl; git_cliff-2.13.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; git_cliff-2.13.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; git_cliff-2.13.1-py3-none-manylinux_2_28_aarch64.whl; git_cliff-2.13.1-py3-none-manylinux_2_5_i686.manylinux1_i686.whl; git_cliff-2.13.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl; git_cliff-2.13.1-py3-none-musllinux_1_2_aarch64.whl; git_cliff-2.13.1-py3-none-musllinux_1_2_i686.whl; git_cliff-2.13.1-py3-none-musllinux_1_2_x86_64.whl; git_cliff-2.13.1-py3-none-win32.whl; git_cliff-2.13.1-py3-none-win_amd64.whl
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
git-changelogGenerates changelogs automatically from git…
permissive · top 15,000 on PyPI
gitchangelogGenerates a formatted changelog from git commit…
permissive · top 15,000 on PyPI
conventional-pre-commitA pre-commit hook that validates git commit…
permissive · top 15,000 on PyPI
commitizenCommitizen enforces standardized commit…
permissive · top 5,000 on PyPI
commitlintLints commit messages against the Conventional…
copyleft · top 15,000 on PyPI
antsibull-changelogantsibull-changelog is a CLI tool that…
copyleft · top 15,000 on PyPI
commit-checkValidates Git commit messages, branch names,…
permissive · top 15,000 on PyPI
towncrierTowncrier generates changelogs from individual…
permissive · top 5,000 on PyPI
sphinxcontrib-log-cabinetA Sphinx extension that organizes changelog…
permissive · top 15,000 on PyPI
python-semantic-releaseAutomates semantic versioning and release…
permissive · top 5,000 on PyPI