An open API service indexing awesome lists of open source software.

https://github.com/segersniels/cmt

A command-line tool designed to help developers write consistent and standardized commit messages across different commit conventions.
https://github.com/segersniels/cmt

charmbracelet cli commit commit-message convention conventional-commits dx gitmoji gitmoji-cli prompt

Last synced: about 1 month ago
JSON representation

A command-line tool designed to help developers write consistent and standardized commit messages across different commit conventions.

Awesome Lists containing this project

README

          

# cmt

[![npm](https://img.shields.io/npm/v/@segersniels/cmt)](https://www.npmjs.com/package/@segersniels/cmt)![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/segersniels/cmt/ci.yml)

`cmt` (short for commit) is a command-line tool designed to help developers write consistent and standardized commit messages across different commit conventions.

![demo](demo.gif)

## Conventions

Open source contributors often face a unique challenge when working across multiple projects: navigating the diverse landscape of commit conventions. Each repository may adhere to its own set of rules for structuring commit messages, from [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) to [Gitmoji](https://gitmoji.dev/), or even custom formats. This inconsistency can lead to confusion, reduced productivity, and potential errors in version control.

`cmt` aims to alleviate this pain point by providing a flexible, easy-to-use tool that adapts to different commit conventions. By standardizing the commit process across projects, `cmt` helps contributors maintain consistency and focus on what truly matters - their code contributions.

Supported conventions at the time of writing:

- [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
- [Gitmoji](https://gitmoji.dev/)

## Install

### NPM

```bash
npm install -g @segersniels/cmt
```

### Script

```bash
# Install in the current directory
curl -sSL https://raw.githubusercontent.com/segersniels/cmt/master/scripts/install.sh | bash
# Install in /usr/local/bin
curl -sSL https://raw.githubusercontent.com/segersniels/cmt/master/scripts/install.sh | sudo bash -s /usr/local/bin
```

Or download one of the released binaries for your operating system [here](https://github.com/segersniels/cmt/releases).

## Usage

### Existing project

You can choose to use `cmt` in an existing project without adding a new configuration file. If no `.cmtrc.json` file is found, `cmt` will attempt to determine the commit convention from the last commit message.

### New project

First initialize `cmt` in your project:

```
cmt init
```

This will create a `.cmtrc.json` file with your preferred settings.

After that simple create a commit:

```
cmt commit
```

or use the shorthand:

```
cmt c
```

Follow the interactive prompts to construct your commit.

## Configuration

`cmt` uses a `.cmtrc.json` file to store configuration. You can edit this file manually or run `cmt init` to set up your preferences.