explaingit

orhun/git-cliff

11,841RustAudience · developerComplexity · 2/5LicenseSetup · easy

TLDR

A command-line tool that automatically generates changelog files from your Git commit history, supporting conventional commits and fully customizable output templates.

Mindmap

mindmap
  root((git-cliff))
    What it does
      Reads git history
      Groups by commit type
      Renders changelog file
    Tech stack
      Rust CLI
      cliff.toml config
      Template engine
    Use cases
      Release notes
      CI automation
      Custom formats
    Audience
      Developers
      Open source maintainers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Automatically generate a formatted CHANGELOG.md for your project before each release.

USE CASE 2

Customize which commit types (feat, fix, chore) appear as sections in your changelog.

USE CASE 3

Use regex-based parsers to extract changelog content from non-conventional commit messages.

Tech stack

Rust

Getting it running

Difficulty · easy Time to first run · 5min
Dual-licensed under Apache 2.0 and MIT, use freely for any purpose, personal or commercial, with no restrictions beyond keeping the copyright notice.

In plain English

git-cliff is a command-line tool written in Rust that generates changelog files from a project's Git commit history. Rather than writing release notes by hand each time, you run git-cliff against your repository and it reads through your commits to produce a formatted changelog document automatically. The tool is designed around the conventional commits format, a widely used convention where each commit message starts with a type prefix such as "feat", "fix", or "chore" to indicate what kind of change it represents. git-cliff uses these prefixes to sort and group commits into labelled sections in the generated changelog. If your project does not follow conventional commits, you can configure regex-based custom parsers in the configuration file to pull useful information out of whatever commit message format you use. The output format is controlled by a template system and a cliff.toml configuration file. You can adjust which sections appear, how commits are grouped within each section, what text accompanies each entry, and how the document is structured overall. This flexibility lets teams adapt the output to match their specific changelog conventions or documentation style. The README is brief and points to the official documentation website for detailed setup instructions, usage examples, and templating reference. An Emacs integration called git-cliff.el exists for generating and updating changelogs from within that editor. The tool has appeared in developer conference talks and newsletters. git-cliff is dual-licensed under Apache 2.0 and MIT, meaning you choose whichever license fits your project. Several similar changelog-generation tools are listed in the README for comparison.

Copy-paste prompts

Prompt 1
I have a Rust CLI tool called git-cliff. Write a cliff.toml config that groups commits by type (feat, fix, chore) and formats the changelog with a date header and links to the commit SHA.
Prompt 2
My project uses non-conventional commit messages like 'JIRA-123: fixed login bug'. Write a git-cliff regex parser config that extracts the ticket number and description for changelog entries.
Prompt 3
Show me how to integrate git-cliff into a GitHub Actions workflow that auto-generates a CHANGELOG.md and creates a GitHub release on each tag push.
Prompt 4
I want git-cliff to skip all 'chore' and 'ci' commits from appearing in the changelog. What configuration do I need in cliff.toml?
Open on GitHub → Explain another repo

← orhun on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.