如何配置Git拒绝首行-m提交信息超过50字符的提交?
限制Git提交消息首行长度不超过50字符的配置方法
嘿,这个需求用Git的commit-msg钩子就能完美实现!这是Git内置的钩子机制,专门用来在提交前检查你的消息格式,下面一步步教你配置:
步骤1:创建commit-msg钩子脚本
在你的Git仓库根目录下,进入.git/hooks文件夹(这个文件夹默认是隐藏的,记得用ls -a才能看到)。
创建一个名为commit-msg的文件,写入以下bash脚本内容:
#!/bin/sh # 读取提交消息的第一行内容 commit_header=$(head -n 1 "$1") # 检查首行长度是否超过50字符 if [ ${#commit_header} -gt 50 ]; then echo "Error: Could not commit, header size larger than 50" exit 1 # 非零退出码会阻止提交 fi exit 0 # 正常退出,允许提交
步骤2:给脚本添加执行权限
执行下面的命令让脚本可以被Git调用:
chmod +x .git/hooks/commit-msg
测试效果
现在试试你提到的长消息提交命令:
git commit -m "AABBCCDDEEFFGGHHIIJJKKLLMMNOOPPQQRRSSTTUUVVWWXXYYZZ"
系统会立刻返回你想要的错误提示:
Error: Could not commit, header size larger than 50
可选:全局生效配置(所有仓库通用)
如果你想让这个限制在所有本地Git仓库都生效,可以把钩子放到Git的全局模板目录:
- 创建全局模板钩子目录:
mkdir -p ~/.git-template/hooks
- 把刚才的
commit-msg脚本复制到这个目录:
cp .git/hooks/commit-msg ~/.git-template/hooks/
- 配置Git使用这个模板目录:
git config --global init.templatedir ~/.git-template
这样以后新创建或克隆的仓库都会自动带上这个提交消息长度检查的钩子啦!
内容的提问来源于stack exchange,提问作者lsund
相关产品推荐
相关产品推荐

