bash - 如何制作检查提交消息的 git 预提交 Hook ?

标签 bash git githooks git-commit

我有一个 git commit hook 脚本,它检查提交消息,如果消息不包含“更新”一词,脚本应该拒绝提交。

#!/bin/bash
read -p "Enter a commit message: " message

if [[ ${message} != *"updated"* ]];then
  echo "Your commit message must contain the word 'updated'"
  else
  git commit -m "$message"
  fi

如果我尝试使用命令将一些文件推送到我的本地仓库中,如何让这个钩子(Hook)自动执行

git commit -m "updated:something"

我的想法是让它不像“运行这个脚本来做提交”,而是当你打开控制台并尝试进行提交并输入提交消息时,脚本会自动检查你的提交消息并传递它或拒绝它。

最佳答案

commit-msg为例

#!/bin/bash

MSG="$1"

if ! grep -qE "updated" "$MSG";then
    cat "$MSG"
    echo "Your commit message must contain the word 'updated'"
    exit 1
fi

chmod 755 commit-msg 并将其复制为 .git/hooks/commit-msg

关于bash - 如何制作检查提交消息的 git 预提交 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45416049/

相关文章:

git filter-branches - 最后没有进展

git - 有没有办法通过prepare-commit-msg独立地在 `git commit`上强制发送一条消息?

bash - 如何将 “escape hell”传递给docker run

Git服务器不随便显示最新推送的文件

macos - 外壳错误 "-bash: bad substitution: no closing ` )'"

git - 如何查找哪些提交删除了包含特定字符串的行?

git - 如何在推送时自动 checkout ?

git - 如何在服务器端 git hook 中获取推送用户信息?

正则表达式匹配引号之间的字符串

linux - Bash +在用户提示后打印默认字符