因此,如果.git / hooks / pre-commit存在,那么它将在以下时间运行:
git commit -am "foobar"
运行。那么如何在预提交中访问所需的git commit消息?
我进行了一些侦查,并将其放在.git / hooks / pre-commit中,并使文件可执行:
#!/usr/bin/env bash
echo "here is pre-commit hook"
env | sort
echo "args:"
echo $@
exit 1;
以下是带有“ GIT”前缀的env变量
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:"
之后没有任何记录...
那么如何在预提交挂钩中访问所需提交消息?
具体来说,如果提交消息的格式不正确,我希望免于预提交。如果还有另一个钩子可以做到这一点,那么这将是一个很好的答案这个问题。
答案 0 :(得分:2)
不是最理想的git hooks情况-如果它是一个env集而不是一个参数(git不是非常线程安全的),那会很好
因此请忘掉.git/hooks/pre-commit
,而使用.git/hooks/commit-msg
,您可能会在其中:
#!/usr/bin/env bash
cat $1
cat .git/COMMIT_EDITMSG
# the two above lines are the same
那是git commit消息,仍在等待提交。