如何捕获git提交消息并运行操作

Jam*_*ine 9 git bash githooks

我是git的新手,我希望能够在推送到origin/master之后捕获提交消息,并根据字符串包含的内容运行bash脚本(在服务器上).

例如,如果我的git commit消息说: [email] my commit message

如果提交消息包含[email]然后执行指定的操作,否则不要这样做.

这是我想在post-receive钩子中使用的示例bash脚本:

#!/bin/bash

MESSAGE= #commit message variable?

if [[ "$MESSAGE" == *[email]* ]]; then
        echo "do action here"
else
        echo "do nothing"
fi
Run Code Online (Sandbox Code Playgroud)

基本上我需要知道的是提交消息的变量名是什么,在上面的bash脚本中使用?另外,我不确定这是否是正确的钩子.

Jam*_*ine 26

我想我找到了自己问题的答案; 可以使用以下git-log命令获取变量:

git log -1 HEAD --pretty=format:%s
Run Code Online (Sandbox Code Playgroud)

所以,我的脚本将是:

#!/bin/bash

MESSAGE=$(git log -1 HEAD --pretty=format:%s)

if [[ "$MESSAGE" == *\[email\]* ]]; then
        echo "do action here"
else
        echo "do nothing"
fi
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助其他正在寻找答案的人.