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:
- Run the pre-commit hook, if it exists and is runnable. If it exits non-zero, abort the commit.
- Copy any specified or configured template (see below) to a temporary file. If there is no template or the template path is not readable, begin with an empty temporary file.
- Add the lines
# Please enter the commit message ... and the output of git status. - Run the
prepare-commit-message hook, if it exists and is runnable, on the temporary file. - Open up your editor on the temporary file. (Your editor is set from
$GIT_EDITOR, the core.editor configuration, $VISUAL, $EDITOR, or a built-in default, whichever is the first one set.) - Once you exit your editor, make the commit, or stop the commit, depending on whether you have provided a commit message.
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.