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

时间:2011-02-02 01:44:49

标签: 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

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

2 个答案:

答案 0 :(得分:26)

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

git log -1 HEAD --pretty=format:%s

所以,我的脚本将是:

#!/bin/bash

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

if [[ "$MESSAGE" == *\[email\]* ]]; then
        echo "do action here"
else
        echo "do nothing"
fi

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

答案 1 :(得分:1)

你可能想要一个git hook