There is also pulling commit messages from a file. The commit -F /path/to/file switch allows you to specify a file that Git will pull text from. I try to write my commit messages before I make a change, because it helps me ensure that everything I'm working on satisfies the single-thing-per-commit rule. I always update the same file, so I made it an alias:
git config --global alias.commit-txt 'commit -F ~/commit.txt'
Edit: If you're unfamiliar with how aliases work, you create one with the above invocation. The portion after alias. is the command you define and want to type. The portion in single-quotes is the actual git command. Thus, you'd type $ git commit-txt
to use the above command. What the command line sees is $ git commit -F ~/commit.txtIt can! See Commitizen and its cli, used by e.g. the Angular project, which offers a cli wizard for filling in a commit message - type (fix, feature, chore, ci, doc, etc), scope (depends on project, one word category), short description, backwards-incompatble changes, etc; see http://commitizen.github.io/cz-cli/. This system can then be used to generate changelogs and do semantic versioning compatible version bumps - patch releases if the diff since the last tag only contains 'fix', minor if it contains 'feat', major if it contains backwards incompatible changes.
Long to short, why can't this be a form of some sort? Engineers / developers have enough to worry about, why add more minutia to the pile?
The CL is not an adequate OSFA solution. If quality and quantity is a concern, when is that going to be addressed?