Are you the 'lazy' type and often write them poorly and unorganized, with no proper explanation of the action and later have trouble navigating in the version tree?
Or do you always put in time and effort, trying to come up with meaningful, easy to understand git commit messages, and push them only when reaching reasonable milestones (finishing updates, adding features, changing the design, etc)?
Personally, I still have to learn to master this too, and, when it comes to the second case, some time ago I came across a nice comment by @devmount, so I decided to share and maybe some of you could find it useful:
Short and clear, thank you for this article!
I tend to use emojis for the type - it shows the type of the commit at first glance, e.g.:
β :heavy_plus_sign:
when adding a file or implementing a feature
π¨ :hammer:
when fixing a bug or issue
π :green_heart:
when improving code or comments
β‘ :zap:
when improving performance
π :scroll:
when updating docs or readme
π :key:
when dealing with security
π :repeat:
when updating dependencies or data
β
:white_check_mark:
when a new release was built
π :shirt:
when refactoring or removing linter warnings
β :x:
when removing code or files
... and looks awesome in the commit history:
How much effort do you put into commit messages and could you share your own techniques to stay organized in the version tree?
Top comments (26)
I follow the Conventional Commit standard, because it allows me to automate Semantic Versioning in CI pipelines.
Examples:
Added a new CLI command?
$ git commit -m "feat: add foo command" && git push
then CI tests, builds, and increments MINOR version1.0.9
->1.1.0
, and publishes artifacts.Fixed a race condition bug?
$ git commit -m "fix: fix race condition" && git push
then CI tests, builds, and increments PATCH version1.1.0
->1.1.1
, and publishes artifacts.If a feature or bug fix is non-backward compatible, then add
BREAKING CHANGE
in git commit message, which will lead to incrementing the MAJOR version1.1.1
->2.0
.If any change needs some context (eg why the change was made), I add it in the commit message body. More often, I reference the ticket or issue in bug tracker, like:
This looks interesting. I should look this up soon. Maybe I can reach out to you, if I need some help.
I like this, I'm curious, do you use something automated to handle your semantic versioning like this?
I use semantic-release for all my projects. I like it because it is language-agnostic.
semantic-release
CLI in CI.I'm using git alias for writing beautiful commit messages. Below, I pasted a few lines from the
.gitconfig
file.Here is an example of an improvement commit.
This is awesome π
Thanks for sharing πβ€
There are conventions; without going semantic versioning all the way:
In a team environment:
Own work: will stop and ask myself what's going on when I err on the "improved a thing" side of things for any length of time as this could signal I'm losing focus or trying to muddle through/conflating separate issues.
When working in a team, I always use ticket number and description of a change, where change is always localized, not pushing 50 file changes in a single commit.
This allows me to go back to the ticket when looking at the code to see what were the exact requirements
Don't you just love seeing "WIP" and then 10+ file changed?
On a personal project, I always use some meaningful message, it just helps when looking at git blame and timeframes
Here are my examples!
Did you know a commit can be quite long actually? I usually have a short title like 'Ticket Number: short description' and then follow with details in a short paragraph.
It may be overkill but commits aren't for you. It's for the poor maintainer trying to add a new feature a year from now. It helps for them to know what the hell you were thinking when you made the change.
this
We are using strict git conventions at our project.
It includes branch naming like [feature|bugfix]/XXX-YYY-3-words-description, where XXX is a short name of project in Jira and YYY is a number of ticket.
For git commits we are using rules:
1) Name like XXX-YYY Do something
2) Name should be up to 80 symbols, detailed description if needed comes as new lines
3) Name should have imperative voice like "Do...", "Make...", "Fix..." instead of "Did","Making", "Fixes"
PR's should have the same naming conventions as git commits.
Talking about being organized π―π
I think I will remember and bam, 10 commits later--no idea. I have been getting better with specifics, but sometimes I fall back into bad habits. Nice article Madza!
git commit -m update
Seriously lazy sometimes.
Quite a bit. But it is less about the message and more about the commit itself. I have too much to say on the subject.
Git is a Communication tool
Jesse Phillips γ» Dec 12 '18 γ» 2 min read
Thank you for sharing πβ€