Skip to main content

Ben Cromwell

Ensuring better git commit messages with a global template

I read the advice here some time ago, and I’ve been following it by and large.

However, only recently I discovered how to enforce a line limit when git-commit starts up nano:

~/.gitconifg:

[core]
    editor = nano -r 72

The problem is that doesn’t help limit the summary to 50 characters, which is what you need for log, shortlog, Github and general readability.

I’ve now expanded this into a full replacement for git’s commit template. It’s automated with ansible as part of my local-setup.

Edit your global git config to include:

[commit]
    template = ~/.gitmessage

Alternatively, run:

git config --global commit.template ~/.gitmessage

And create your .gitmessage file:



# First thing's first: your <= 50 char summary ##
########################################### c50 ↑

# Write your description below this block ####################### c72 ↓
# Explain the problem that this commit is solving. Focus on why you are
# making this change as opposed to how (the code explains that).
# Are there side effects or other unintuitive consequences of this
# change? Here's the place to explain them.
##################################################################### ↓

The markdown parser in Ghost is removing some subtleties with the placement of new lines and lengths. The raw file in all its glory can be found on Github.

Here’s a oneliner to set yours:

$ wget https://raw.githubusercontent.com/bencromwell/local-setup/master/git/files/gitmessage -O ~/.gitmessage