场景1:检查commit message是否包含日报格式
使用 commit-msg 钩子检查提交信息格式:

#!/bin/bash
# .git/hooks/commit-msg
# 定义日报格式要求
PATTERN="^\[(日报|周报|日常更新)\] .+"
# 读取commit message
COMMIT_MSG=$(cat "$1")
# 检查是否匹配格式
if [[ ! "$COMMIT_MSG" =~ $PATTERN ]]; then
echo "错误:提交信息不符合日报格式要求!"
echo "格式:[日报/周报/日常更新] 具体内容"
echo "示例:[日报] 完成了用户登录模块的后端接口开发"
exit 1
fi
# 可选:检查是否包含日期
DATE_PATTERN=$(date +%Y-%m-%d)
if [[ "$COMMIT_MSG" == *"$DATE_PATTERN"* ]]; then
echo "✓ 提交信息包含当前日期"
fi
exit 0
场景2:检查日报文件内容是否符合规范
使用 pre-commit 钩子检查特定日报文件:
#!/bin/bash
# .git/hooks/pre-commit
# 检查是否有日报文件被修改
DAILY_REPORT_FILE="daily_report.md"
if git diff --cached --name-only | grep -q "$DAILY_REPORT_FILE"; then
echo "检查日报文件..."
# 获取暂存区中的日报内容
REPORT_CONTENT=$(git diff --cached "$DAILY_REPORT_FILE" | grep "^+" | grep -v "^+++")
# 检查必要字段
CHECKS_PASSED=true
# 1. 检查是否有日期
if ! echo "$REPORT_CONTENT" | grep -qE "日期|Date|$(date +%Y-%m-%d)"; then
echo "❌ 缺少日期信息"
CHECKS_PASSED=false
fi
# 2. 检查是否有工作内容
if ! echo "$REPORT_CONTENT" | grep -qE "工作内容|任务|完成|进行"; then
echo "❌ 缺少工作内容描述"
CHECKS_PASSED=false
fi
# 3. 检查是否有计划(可选)
if ! echo "$REPORT_CONTENT" | grep -qE "计划|明日|下一步"; then
echo "⚠️ 未发现明日计划(可选)"
fi
# 4. 检查日报字数(至少50字)
WORD_COUNT=$(echo "$REPORT_CONTENT" | wc -m)
if [ "$WORD_COUNT" -lt 50 ]; then
echo "❌ 日报内容过短(当前${WORD_COUNT}字,建议至少50字)"
CHECKS_PASSED=false
fi
if [ "$CHECKS_PASSED" = false ]; then
echo "日报格式检查未通过,请完善后重新提交"
exit 1
else
echo "✓ 日报格式检查通过"
fi
fi
exit 0
使用说明
安装钩子
# 进入项目目录 cd your-project # 创建钩子文件 cat > .git/hooks/commit-msg << 'EOF' #!/bin/bash # 把上面的脚本内容粘贴到这里 EOF # 赋予执行权限 chmod +x .git/hooks/commit-msg
日报模板示例 (daily_report.md)
# 日报 - 2024-01-15 ## 基本信息 - 姓名:张三 - 日期:2024-01-15 - 项目:XX管理系统 ## 今日工作内容 1. 完成了用户登录模块的后端接口开发 2. 修复了三个线上bug 3. 编写了相关单元测试(覆盖率达85%) ## 遇到的问题 - 数据库查询性能优化需要进一步调研 ## 明日计划 1. 完成接口联调测试 2. 开始用户权限管理模块开发
高级配置(可选)
创建配置文件 .githooks-config:
# 配置检查规则
DAILY_REPORT_FILE=daily_report.md
MIN_CONTENT_LENGTH=50
REQUIRED_FIELDS=("日期" "工作内容" "姓名")
OPTIONAL_FIELDS=("计划" "问题")
注意事项
-
临时跳过检查:
git commit --no-verify -m "跳过检查"
-
在团队中统一配置:
# 项目根目录创建hooks目录 mkdir -p .githooks
设置Git使用自定义hooks目录
git config core.hooksPath .githooks
3. **多平台兼容**:以上脚本基于bash,在Windows上需要使用Git Bash或WSL
这个钩子脚本可以确保团队成员提交的日报格式规范、内容完整,便于项目管理和追踪。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播