About git-com

What is git-com?

git-com is a tool for creating structured commit messages that’s easy to configure for each project. A simple YAML document at the repo’s root drives an interactive UI with select lists and text fields to easily populate your commit message with structured, and repeatable elements.

The elements you specify in the YAML tell it to present users with a text field, a selection list, a multi-select, or a confirmation. git-com then combines your responses into a well-formatted commit message.

Check out what it looks like in action…

hugo

Why Use Structured Commit Messages?

Freeform commit messages tend to drift. One person writes “fixed bug”, another writes “BUG-1234: Resolve null pointer in auth module”, and a third writes “stuff”. Over time, your git history becomes useless for finding commits relevant to your concerns.

Structured commit messages solve this by guiding contributors through a consistent format. Here’s why that matters:

Ensure Ticket Numbers Are Always Included

Configure a required (or optional) ticket number field. Contributors won’t forget to link their commits to your issue tracker.

Identify Which Part of the Codebase Changed

Add a selection prompt for code sections or modules. At a glance, you can see whether a commit affects the frontend, backend, API, or documentation.

Clarify the Type of Change

Is it a bug fix? A new feature? A refactor? A selection list makes this explicit and consistent across all contributors.

Enable Custom Tooling

Standardized commit messages are machine-readable. You can build tools to:

Guarantee Required Information

Your processes or tooling may require specific metadata in every commit. git-com ensures contributors provide it—no more chasing people down to add missing ticket numbers or tags.

Examples

Complex Commit Message

A configuration with multiple elements can produce commits like this:

[front-end] bug-fix: item listing works with large minimum font size

Text elements started overlapping each other when a user had a
minimum font size set in their browser.

Tags: accessibility, css

That commit message could have been created with the following elements

<code-section> <work-type>: <title>

<description>

<tags>

Simple Commit Message

Not every project needs complexity. A minimal configuration might produce:

[front-end] fixed minimum font size issues

Text elements started overlapping each other when a user had a
minimum font size set in their browser.

That commit message could have been created with the following elements. You could make everything except the title optional if you wanted.

<code-section> <title>

<description>

Real-world examples

While the metadata in the details can be useful, the title is the most valuable info. I experimented with specifying the change type and section of the codebase in the commit message…

[feat.] core: added support for amending last commit

But eventually realized that - for my work - less was better, and now I just use the kind of change in the title.

Codebase Example

[fix] was erroring if run from a subdirectory
[fix] icon in readme on github
[fix] removed unecessary blank line from .git-com.yaml
[fix] removed flag from script to update homebrew tap
[add] added quick-start to docs
[clean-up] simplified .git-com.yaml

I have an optional multi-select that can add a “Code Sections” line to the body like this:

Code Sections: core, docs

When working on my novels I have a simple configuration that lets me choose which book (name of the main character) I was working on and leaves the rest free-form.

Writing Example:

[ji-woo] renamed 2 of the container kids
[thimble] finished telling taylor's dad about thimble
[thimble] few days worth of editing and adding
[worldbook] added info re cats barely growing
[worldbook] added / updated content warning stuff
[nicole] finished off day after meeting ji-woo

I contemplated a multi-select for the body that’d let me specify which characters were involved. It’d be great for building tools that could answer questions like “was this character in that scene?” but it would only work if I limited my changes to one scene at a time, and the reality is that my edits and additions frequently span multiple scenes and chapters.

Getting Started

Check out the Installation and Usage pages to set up git-com for your project.