# Git Hooks 自动化

URL: https://caijiao.org/git/advanced/hooks
Source: docs/git/advanced/hooks.md
Description: 本章介绍 Git Hooks 的概念与使用，帮助实现提交前检查、自动化脚本执行等功能，提高开发效率和代码质量。

Git Hooks 是 Git 提供的钩子机制，允许用户在特定事件触发时自动执行脚本，如提交前检查代码、推送后通知等。

## 常见钩子类型

- `pre-commit`：提交前执行，用于代码格式检查、单元测试等。
- `commit-msg`：提交信息检查。
- `pre-push`：推送前执行。
- `post-commit`：提交后执行。

## 使用方法

钩子脚本位于 `.git/hooks` 目录，默认有示例文件。启用时，去掉脚本文件名后的 `.sample` 并赋予执行权限。

例如，创建 `pre-commit` 钩子：

```bash
#!/bin/sh
# 检查是否包含 TODO
if git diff --cached | grep TODO; then
  echo "请移除 TODO 后再提交"
  exit 1
fi
```

保存为 `.git/hooks/pre-commit`，并赋予执行权限：

```bash
chmod +x .git/hooks/pre-commit
```

## 使用工具简化

常用工具如 Husky 可以更方便地管理 Git Hooks，支持跨平台配置和版本控制。

Git Hooks 自动化提升了代码质量控制和开发流程的规范性，是团队开发中不可或缺的利器。
