How to automatically generate commit message
If you are really that lazy you may just use the following. In brief, it does a git status
, extract lines for new files
, deleted
, renamed
and modified
, and pass it to git commit
# LANG=C.UTF-8 or any UTF-8 English locale supported by your OS may be used
LANG=C git -c color.status=false status \
| sed -n -r -e '1,/Changes to be committed:/ d' \
-e '1,1 d' \
-e '/^Untracked files:/,$ d' \
-e 's/^\s*//' \
-e '/./p' \
| git commit -F -
Tweak the sed
part to customize how you want the message to be generated base on result of git status
Alias it to something short, or save it as a script (e.g. git-qcommit
) so that you can use it as git qcommit
A sample message from git log
adrianshum:~/workspace/foo-git (master) $ git log
commit 78dfe945e8ad6421b4be74cbb8a00deb21477437
Author: adrianshum <[email protected]>
Date: Wed Jan 27 01:53:45 2016 +0000
renamed: bar.txt -> bar2.txt
modified: foo.txt
Edited:
Changed original grep
to sed
to make the commit message generation logic more generic by including lines between Changes to be committed
and Untracked files
, and produce a slightly better looking commit message)
You can use the commit -m
command to pass any message as your commit message.
Another solution is to use the template configuration option to define default template.
commit.template
There is commit.template
configuration variable.
commit.template
Specify a file to use as the template for new commit messages.
"~/" is expanded to the value of $HOME and "~user/" to the specified user’s home directory.
If you don't provide a message (using the -m
flag), an auto-generated message will be opened and asks you to modify it (if you with). It looks like:
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch <branch>
# Changes to be committed:
# deleted: <deleted files>
# modified: <modified files>
#
# Untracked files:
# <untracked files>
Now you just have to remove the #
from the lines you want to insert (say the modified ones).
I really discourage you from doing that, commit messages are very important.
Related question with different (maybe better) approach.