温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

git钩子函数怎么用

发布时间:2026-11-10 03:37:35 来源:亿速云 阅读:96 作者:小樊 栏目:软件技术

Git 钩子(Git Hooks)是 Git 提供的一种在特定 Git 操作发生时自动执行脚本的机制,常用于代码检查、自动格式化、提交规范校验、自动部署等。

下面从 是什么 → 在哪 → 怎么用 → 常见示例 给你讲清楚。


一、Git 钩子是什么

Git 钩子是放在 .git/hooks/ 目录下的可执行脚本文件,在 Git 执行某些动作(如 commit、push)前后自动触发。

常见钩子类型:

  • pre-commit:提交前执行(最常用)
  • commit-msg:校验提交信息
  • pre-push:推送前执行
  • post-merge:合并后执行

二、钩子文件在哪里

每个 Git 仓库都有:

.git/hooks/

里面默认有一些 .sample 示例文件,如:

pre-commit.sample
commit-msg.sample

注意:

  • 钩子只对当前仓库生效
  • 不会随仓库提交(.git 不在版本控制中)

三、最基础的用法(手写一个钩子)

示例 1:pre-commit 提交前检查

  1. 创建钩子文件
touch .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
  1. 写入内容(Shell 示例)
#!/bin/sh

echo "开始代码检查..."

# 假设用 eslint
npm run lint

if [ $? -ne 0 ]; then
  echo "代码检查未通过,禁止提交"
  exit 1
fi
  1. 正常提交
git commit -m "test"

如果 lint 失败,提交会被拦截。


四、常用钩子示例

1️⃣ commit-msg 校验提交格式

#!/bin/sh

MSG=$(cat "$1")

if ! echo "$MSG" | grep -Eq "^(feat|fix|docs|style|refactor|test|chore):"; then
  echo "提交信息不符合规范"
  exit 1
fi

2️⃣ pre-push 禁止直接 push 到 main

#!/bin/sh

BRANCH=$(git rev-parse --abbrev-ref HEAD)

if [ "$BRANCH" = "main" ]; then
  echo "不能直接 push 到 main"
  exit 1
fi

五、更推荐的现代用法(工具化)

手写钩子维护成本高,推荐用工具:

✅ Husky(前端最常用)

npm install husky -D
npx husky init

生成:

.husky/pre-commit

内容示例:

npm run lint

✅ lint-staged(只检查改动文件)

npx lint-staged

六、团队共享钩子(重要)

由于 .git/hooks 不共享,常见方案:

  • Husky + 配置文件提交到仓库
  • 用 core.hooksPath 指定共享目录
git config core.hooksPath .githooks

七、调试技巧

  • 钩子不执行?检查:
    • 是否有执行权限 chmod +x
    • 是否写错文件名
  • 想看错误:
GIT_TRACE=1 git commit

如果你愿意,可以告诉我:

  • 用的是 前端 / 后端 / Python / Java
  • 想做 代码检查 / 提交规范 / 自动部署

我可以直接给你一套可用的钩子配置。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

git
AI
助
手