在预提交挂钩中检索所需的 git 提交消息

Retrieving desired git commit message in pre-commit hook

因此,如果 .git/hooks/pre-commit 存在,那么它将在 运行 紧随其后:

git commit -am "foobar"

是运行。那么如何在预提交中访问所需的 git 提交消息?

我做了一些调查并将其放入 .git/hooks/pre-commit 并使文件可执行:

#!/usr/bin/env bash

echo "here is pre-commit hook"

env | sort

echo "args:"

echo $@

exit 1;

这是以 "GIT"

为前缀的环境变量
GIT_AUTHOR_DATE=@1558245421 -0700
GIT_AUTHOR_EMAIL=alex@alexs-mac.local
GIT_AUTHOR_NAME=Alexander Mills
GIT_EDITOR=:
GIT_EXEC_PATH=/Library/Developer/CommandLineTools/usr/libexec/git-core
GIT_INDEX_FILE=/Users/alex/codes/interos/notifier-server/.git/index.lock
GIT_PREFIX=

并且脚本似乎没有参数,因为在 echo "args:"...

之后没有任何记录

那么如何访问预提交挂钩中的所需提交消息?

具体来说,如果提交消息的格式不正确,我希望避免预提交。如果有另一个钩子可以做到这一点,那就可以了很好地回答这个问题。

不是最理想的 git 挂钩情况 - 如果它是一个环境集而不是一个参数就好了(git 不是很 thread-safe)

所以忘记 .git/hooks/pre-commit 而是使用 .git/hooks/commit-msg,在那里你可能有:

#!/usr/bin/env bash

cat 
cat .git/COMMIT_EDITMSG

# the two above lines are the same

那是仍在等待提交的 git 提交消息。