git-changelog
Automatic Changelog generator using Jinja2 templates.
What it is and what it does
git-changelog is a command-line tool and Python library that reads your git commit history and generates a formatted changelog using Jinja2 templates. It parses commits according to recognized conventions (Angular, Conventional Commit, or basic styles), extracts metadata like issue and PR references, and understands semantic versioning and PEP 440 version schemes to suggest the next version number. The tool is agnostic to git hosting platforms but includes built-in reference parsing for GitHub, GitLab, and Bitbucket.
You run it as a CLI tool in your repository to output a changelog, or import it as a library to integrate changelog generation into your build pipeline. The Jinja2 template system gives you full control over the output format—the package ships with templates for Keep a Changelog and Angular conventions, but you can write custom templates to match your project's style. It also supports Git trailers in commit messages and allows template context injection for further customization.
Use it for:
- Generate a changelog automatically as part of your release workflow, parsing conventional commits to extract features, fixes, and breaking changes.
- Maintain a Keep a Changelog-formatted file by running git-changelog in CI/CD and committing the output before each release.
- Create a custom changelog format by writing a Jinja2 template that extracts specific commit metadata and renders it in your project's preferred style.
- Guess the next semantic version based on commit history (e.g., patch vs. minor vs. major bump) to automate version bumping.
- Parse issue and PR references from commit messages in a provider-agnostic way using Git trailers, then link them in the generated changelog.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Generates changelogs automatically from git commit history using Jinja2 templates, with built-in support for multiple commit conventions and git hosting platforms.
Yes, if you use git and want to automate changelog generation. The package is actively maintained, has low install friction, supports modern Python versions, carries no security vulnerabilities, and offers both a simple CLI and a programmatic API. The permissive ISC license poses no restrictions. It is suitable for projects that follow or can adopt a recognized commit convention; teams with highly custom changelog needs should verify that Jinja2 templating meets their requirements.
Install
git-changelog on PyPI
pip
pip install git-changeloguv
uv add git-changelogpoetry
poetry add git-changelogInstalling git-changelog
Before you install
Low install friction with six straightforward runtime dependencies. Actively maintained with a release within the past week and recent commits; marked as Beta in development status but supports current Python versions (3.10–3.14).
License in practice
ISC permissive license allows commercial and private use with minimal restrictions; suitable for most projects without licensing concerns.
Quickstart
pip install git-changelog
In your repository:
git-changelog
Or programmatically:
from git_changelog.cli import main
main()
Requires Python 3.10 or later and a git repository to parse.
Verify before relying
- Whether the package can handle very large git histories without performance degradation.
- How well the built-in templates match the Keep a Changelog and Angular specifications in practice.
- Whether custom Jinja2 templates are easy to write and debug for non-standard changelog formats.
Package facts
| License | ISC (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 6 — Jinja2, packaging, platformdirs, semver, tomli, typing-extensions |
| Maintenance | actively maintained — 7 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 109,805/month — #12,497 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: git_changelog-2.9.6-py3-none-any.whl
Keywords: git, changelog, changelog-generator, commit-style, commit-convention
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-cliffgit-cliff generates changelog files from Git…
unclear · top 15,000 on PyPI
makeGenerates project directory structures and…
permissive · top 15,000 on PyPI
gitchangelogGenerates a formatted changelog from git commit…
permissive · top 15,000 on PyPI
commitizenCommitizen enforces standardized commit…
permissive · top 5,000 on PyPI
Jinja2Jinja2 is a templating engine that renders…
permissive · top 100 on PyPI
ruamel.yaml.jinja2Enables Jinja2 templating within YAML files by…
permissive · top 5,000 on PyPI
git-me-the-urlConverts git repository references (file paths,…
copyleft · top 15,000 on PyPI
envtplRenders Jinja2 templates on the command line,…
copyleft · top 15,000 on PyPI
cookiecutterCookiecutter is a command-line tool that…
unclear · top 5,000 on PyPI
django-jinjaIntegrates Jinja2 templating into Django,…
permissive · top 15,000 on PyPI