## About **git-cliff** can generate [changelog](https://en.wikipedia.org/wiki/Changelog) files from the [Git](https://git-scm.com/) history by utilizing [conventional commits](#conventional_commits) as well as regex-powered [custom parsers](#commit_parsers). The [changelog template](#templating) can be customized with a [configuration file](#configuration-file) to match the desired format. ![preview](https://user-images.githubusercontent.com/24392180/128637997-5713ba25-d8f3-40c7-8ba8-ea7f333ead88.png)
Table of Contents - [About](#about) - [Installation](#installation) - [From crates.io](#from-cratesio) - [Using pacman](#using-pacman) - [Binary releases](#binary-releases) - [Build from source](#build-from-source) - [Usage](#usage) - [Command Line Arguments](#command-line-arguments) - [Examples](#examples) - [Docker](#docker) - [GitHub Action](#github-action) - [GitLab CI/CD](#gitlab-cicd) - [Configuration File](#configuration-file) - [changelog](#changelog) - [header](#header) - [body](#body) - [trim](#trim) - [footer](#footer) - [git](#git) - [conventional_commits](#conventional_commits) - [commit_parsers](#commit_parsers) - [filter_commits](#filter_commits) - [tag_pattern](#tag_pattern) - [skip_tags](#skip_tags) - [topo_order](#topo_order) - [sort_commits](#sort_commits) - [Templating](#templating) - [Context](#context) - [Conventional Commits](#conventional-commits) - [Breaking Changes](#breaking-changes) - [Non-Conventional Commits](#non-conventional-commits) - [Syntax](#syntax) - [Examples](#examples-1) - [Basic](#basic) - [Detailed](#detailed) - [Scoped](#scoped) - [Scoped (Sorted)](#scoped-sorted) - [Keep a Changelog](#keep-a-changelog) - [Similar Projects](#similar-projects) - [License](#license) - [Copyright](#copyright)
## Installation
Packaging status [![Packaging status](https://repology.org/badge/vertical-allrepos/git-cliff.svg)](https://repology.org/project/git-cliff/versions)
### From crates.io [git-cliff](crates.io/crates/git-cliff) can be installed from crates.io: ```sh cargo install git-cliff ``` ### Using pacman If you are using Arch Linux, **git-cliff** can be installed from the [community repository](https://archlinux.org/packages/community/x86_64/git-cliff/): ```sh pacman -S git-cliff ``` ### Binary releases See the available binaries for different operating systems/architectures from the [releases page](https://github.com/orhun/git-cliff/releases). \* Release tarballs are signed with the following PGP key: [1D2D410A741137EBC544826F4A92FA17B6619297](https://keyserver.ubuntu.com/pks/lookup?search=0x4A92FA17B6619297&op=vindex) ### Build from source * Linux dependencies: [zlib](https://zlib.net/) ```sh # binary will be located at `target/release/git-cliff` CARGO_TARGET_DIR=target cargo build --release ``` ## Usage ### Command Line Arguments ``` git-cliff [FLAGS] [OPTIONS] [RANGE] ``` **Flags:** ``` -v, --verbose Increases the logging verbosity -i, --init Writes the default configuration file to cliff.toml -l, --latest Processes the commits starting from the latest tag --current Processes the commits that belong to the current tag -u, --unreleased Processes the commits that do not belong to a tag --topo-order Sorts the tags topologically -h, --help Prints help information -V, --version Prints version information ``` **Options:** ``` -c, --config Sets the configuration file [env: CONFIG=] [default: cliff.toml] -w, --workdir Sets the working directory [env: WORKDIR=] -r, --repository Sets the git repository [env: REPOSITORY=] --include-path ... Sets the path to include related commits [env: INCLUDE_PATH=] --exclude-path ... Sets the path to exclude related commits [env: EXCLUDE_PATH=] -p, --prepend Prepends entries to the given changelog file [env: PREPEND= -o, --output Writes output to the given file [env: OUTPUT=] -t, --tag Sets the tag for the latest version [env: TAG=] -b, --body