Skip to content

Instantly share code, notes, and snippets.

@shytikov
Created July 17, 2012 21:07
Show Gist options
  • Save shytikov/3132078 to your computer and use it in GitHub Desktop.
Save shytikov/3132078 to your computer and use it in GitHub Desktop.
commit-msg hook script
#!/bin/sh
#
# Automatically adds branch name and branch description to every commit message.
#
NAME=$(git branch | grep '*' | sed 's/* //')
DESCRIPTION=$(git config branch."$NAME".description)
TEXT=$(cat "$1" | sed '/^#.*/d')
if [ -n "$TEXT" ]
then
echo "$NAME"': '$(cat "$1" | sed '/^#.*/d') > "$1"
if [ -n "$DESCRIPTION" ]
then
echo "" >> "$1"
echo $DESCRIPTION >> "$1"
fi
else
echo "Aborting commit due to empty commit message."
exit 1
fi
@azizmb
Copy link

azizmb commented Oct 22, 2012

Hi! Thanks for the script. One issue though. When I use this hook, I lose any line breaks in the commit messages. Any idea how to fix this?

@pzelnip
Copy link

pzelnip commented Jul 16, 2013

On a "git commit -a" I always get "aborting commit due to empty commit message".

@chrishough
Copy link

Great post +11

@danwald
Copy link

danwald commented Feb 20, 2015

you should put this in your prepare-commit-msg instead

@san7hos
Copy link

san7hos commented Mar 16, 2016

@danwald you cannot start lines with # in the vim editor, that makes it harder to put in the prepare hook

@synthesizerpatel
Copy link

synthesizerpatel commented May 3, 2017

A tiny amount of code golf for getting the branch name if you care:

NAME=$(git branch | sed -n -e 's/^* //gp')

@blkwtkns
Copy link

This is great, thank you. It has cause a little problem when doing an interactive rebase and attempting to reword a commit.

@rbobillot
Copy link

rbobillot commented Jul 12, 2021

Also, if you just wanna get your branch name, without using sed, grep nor awk:
NAME=$(git symbolic-ref --short HEAD)
NAME=$(git branch --show-current)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment