DEV Community

Discussion on: How to Write Useful Commit Messages (My Commit Message Template)

Collapse
 
ryansmith profile image
Ryan Smith • Edited

Nice guide, great points here.

I think commit-messages should be a lot like commenting code. Instead of re-stating the obvious in the commit message, having some meaning definitely gives more value. My general rule of thumb is to write a complete statement, not a question, sentence fragment, or a word. It should have a subject and a predicate in it. That is not to test people's English skills, but to ensure that it provides meaning.

I noticed some repositories have a policy on prefixing with "feat", "fix", "docs", etc. but I'm wondering if anyone finds those useful? To me, those seem like unnecessary clutter and are a crutch for not writing useful commit messages. Is "(feat) Add users" better than "Implement functionality to add users"? I suppose the argument could be they are easier to scan in a listing, but if it is an invitation to be brief then wouldn't that mean having to look deeper into it to really figure out what it is?

Collapse
 
svsven profile image
Sven van Steenis

There are cases where prefixes like that can be useful - writing "fix" followed by an issue number can automatically resolve said issue on Github, and there are similar integrations with for example JIRA. Granted, it doesn't have to be a prefix, or even be in the subject line for that matter - but still.

Outside of automated stuff like that I suppose it comes down to personal preferences. In my case I have found prefixes like that to be useful sometimes when skimming through a log on projects with multiple people.

Collapse
 
ryansmith profile image
Ryan Smith

I like having a Jira (or whatever platform) issue number in it. Even if there is no automation set up to read that, usually the Jira issue title/description/comments give more history of it that might not be captured in the commit message.

Collapse
 
codemouse92 profile image
Jason C. McDonald

One team I heard of uses a standardized set of emojis in this same way.

Collapse
 
emptyother profile image
emptyother

How would that work? Replace ✔ for "fixed", 🆕 for "feat", 📄 for "docs" in the commit messages or something?

Thread Thread
 
codemouse92 profile image
Jason C. McDonald • Edited
Collapse
 
mohamedelidrissi_98 profile image
Mohamed ELIDRISSI

"I noticed some repositories have a policy on prefixing with "feat", "fix", "docs", etc. but I'm wondering if anyone finds those useful?"

There's an npm package named commitizen that does just the same, it enforces to select the type of modifications that were made and it appends it to the beginning of the commit's subject, I personally find it useful but not strictly necessary

Collapse
 
sonicoder profile image
Gábor Soós

Those pefixes can be used for automatic versioning of a library with a tool like semantic-release

Collapse
 
jacobherrington profile image
Jacob Herrington (he/him)

As a maintainer, I see the benefit of having some of those prefixes, but I think you can lean on GitHub or GitLab labels for that kind of support.

Good thoughts!