gitlog --pretty Full spec ↗

// conventional commits 1.0.0

Say what changed.
Automate everything after.

A lightweight commit convention that both humans and tools can parse — it drives your changelog and your version bump. This is the fast-lookup cheatsheet; the canonical spec is one tap away.

↓ full structure, with the optional body and footer, below

// syntax

Full structure

~/project ⎇ main
<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

// types

Commit types

Core — these drive SemVer

PATCH fix

A bug fix.

MINOR feat

A new feature.

MAJOR any type + !

A breaking change, regardless of type.

Additional — common convention, no SemVer effect on their own

build

Changes to the build system or external dependencies

chore

Other changes that don't modify src or test files — tooling, deps, config

ci

Changes to CI configuration files and scripts

docs

Documentation-only changes

perf

A code change that improves performance

refactor

A code change that's neither a fix nor a feature

revert

Reverts a previous commit

style

Formatting only — whitespace, semicolons. No code meaning change

test

Adding or correcting tests

These aren't mandated by the spec — teams can define their own.

// breaking changes

Signal a MAJOR bump

option 1 ! shorthand
feat(api)!: drop support for Node 18
option 2 footer
fix: prevent unauthorized access to admin panel

BREAKING CHANGE: the isAdmin flag is now strictly
enforced on all v2 endpoints

// examples

Real commits

minimal
docs: fix typo in README installation steps
with scope
feat(auth): add OAuth2 provider support
body + footer
fix(parser): resolve race condition on rapid sequential inputs

Introduce a unique request ID to tracking payloads. Dismiss incoming
responses if they do not match the latest request ID.

Reviewed-by: @dev-lead
Refs: #402

// tips

Good to know