Reputation: 141
I've added some changes on commit message in prepare-commit-msg file and then I exec this command
git config --global commit.template .git/hooks/prepare-commit-msg
After that when I do git commit I receive something like this
40 lines of my changes and then
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# Explicit paths specified without -i nor -o; assuming --only paths...
# On branch master
# Changes to be committed:
#
# modified: test
#
Question is there any chance to show this default message on the top? Or better permanently remove this message?
Upvotes: 6
Views: 5327
Reputation: 489678
You seem to be mixing up the commit.template
option (which provides a default value for the --template
option to git commit
) with the prepare-commit-message
hook.
Normally git commit
uses the following sequence of operations:
# Please enter the commit message ...
and the output of git status
.prepare-commit-message
hook, if it exists and is runnable, on the temporary file.$GIT_EDITOR
, the core.editor
configuration, $VISUAL
, $EDITOR
, or a built-in default, whichever is the first one set.)If you use the -f
or -m
options, steps 2, 3, and 5 are normally skipped (though you can force git to open your editor by adding --edit
). Presumably you have not used those options.
What the --template
option does—and hence what commit.template
does—is to provides the path name of a file that git commit
will copy in step 2. This does not affect lines added in step 3. While the path .git/hooks/prepare-commit-message
is (probably) a file git can read, it's not a very sensible name for your template, since if that same path is made executable, the file will become runnable and step 4 will probably behave badly.
You can tell git commit
not to do step 3 by adding --no-status
. (Also, as a somewhat odd side effect, --no-edit
, which explicitly suppresses step 5, also suppresses step 3.)
Or, you can make use of step 4 to eliminate some or all of the git status
output and standard # Please enter...
message. The prepare-commit-message
hook can make arbitrary changes to the template file.
Note that --cleanup=<mode>
affects what winds up in the final commit message, and also the processing of step 6. For details see the git commit
documentation.
Upvotes: 11