Writing Better Commits
Writing better commits with the better-commits CLI
Recently I wrote a lightweight open-source CLI for writing better commits. It helps you follow the Conventional Commit Guideline, while being flexible and configurable.
- Highly flexible configuration
- Easy install with sane defaults
- Infers ticket/issue and type from branch
- Git status & interactive git add
- Color preview and confirm
But, why write better commits?
A good commit history helps others ( and the future you) better understand your code and how it came to be that way.
For myself, writing a good commit is like writing good notes. I want to write it in a way that when I look back I can understand why and how I made the decisions I did.
better-commits
and the Conventional Commit Guidelines, provide a way to format commits consistently. Doing so can result in some cool side-effects, aside from making your commits easier to read and understand.
- Automate versioning from commits with semantic release
- Automate change logs from commits
- Automate build processes based on commit
- Auto reference & close issues to PRs
- Auto populate the title and body of Github PRs and merge commits.
Examples Commits
Below are a few example commits. These follow the Conventional Commit Guidelines
, and may provide some inspiration for writing better commits.
New feature
- The type of change, scope, github issue, and high-level description are all easily visible.
- The body explains what changed. Including the property name to enable.
- The ticket is referenced in the footer, which connects the Github issue with its corresponding pull request.
feat(tools): #3 infer ticket/issue from branch
If commit_type.infer_value_from_branch is enabled,
will attempt to infer ticket/issue from branch name.
Updated documentation with details.
Closes: #3
Breaking changes
- The breaking change is signified by:
- An exclamation point after the type and before the colon, brings attention to the commit
- The “BREAKING CHANGE” label explains what the breaking change was.
- This could be extended to include an optional body. Explaining a path to migrate from Node 6 and resolve the breaking change.
chore!: drop Node 6 from testing matrix
BREAKING CHANGE: dropping Node 6 which hits end of life in April
Quick adjustment to documentation
- Technically a valid conventional commit. Many of the items in the specification are optional or shouldn’t be forced if not applicable.
docs: Fix tabbing in defaults section of readme
Conclusion
At my job as a software engineer, I’ve always followed branch and git commit guidelines. However, I’ve ignored maintaining a good commit history in my personal close-sourced projects.
As those projects have grown. I’ve realized that the small increased effort upfront, to write a good commit message, is worth the improved developer experience (imo). — And so I created better-commits
. To be able to quickly and easily follow good practices across all of my projects.
If you enjoy using the better-commits CLI, ⭐️ star it on github, so I feel like the special little snowflake my mother tells me I am.
Originally published at https://blog.flotes.app.
📺 Check out my Lofi Pomodoro Study Videos on Youtube
☁️ Markdown Note-taking with Flashcard Features — Flotes is how I take notes and efficiently study multiple topics at a time. Try the demo (no login required) or sign up for free.