The problem of poor or even shitty commit messages backs to me regularly like a boomerang. I can evangelize, I can point the good examples, the bad examples but it still comes back. Why it is happening?

It shouldn’t be if you have some self discipline in you. A good commit message is the beginning of the craftsmanship way for any software professional. But most of the software developers are lazy and they follow DRY principle because it sounds so easy, when firing up git commit -m "Fix" or git commit -m "Post review fixes" Or … Probably every repository has at least dozen of such examples.

The truth is that git gives us tools to write good commit messages. Even official documentation for git-commit gives some pieces of advice. But today I would like to say about a specific switch of git-commit. --verbose option is something you should look for. Instead of using -m option to provide meaningless message use --verbose. This will allow you to provide a great message in your favourite text editor but at the bottom of message template, you will see the diff between your changes and HEAD. See the image below (Emacs in my case)

git commit --verbose in Emacs

A couple of months ago I added this to my git-config

git config commit.verbose true

This will make your life easier and you will be seen as true professional by other software developers.