跳转到内容

Git Hooks

什么是 Git Hooks? 🎣

Git Hooks 是在 Git 仓库中特定事件发生时自动执行的脚本。iGit 提供了一套预配置的 Git Hooks,以及各种用户定义钩子脚本,帮助你规范化代码提交流程,确保代码质量。

hooks:
enabled: true
hooks:
pre-commit:
- npm run test
- npm run build

配置说明 ⚙️

Git Hooks 配置

hooks:
# 是否启用 hooks
enabled: true
# hooks 配置
hooks:
# 可以配置任意 Git hook
pre-commit:
- command1
- command2
commit-msg:
- command1
pre-push:
- command1

暂存区 Hooks 配置

暂存区 hooks 是 iGit 提供的用来在提交前执行命令的钩子配置,一般可以在这个阶段对修改的文件执行代码检查和格式化。

staged_hooks:
# 是否启用暂存区 hooks
enabled: true
# 针对不同文件类型的规则
rules:
"**/*.{js,ts}":
- eslint --fix
"**/*.{css,scss}":
- stylelint --fix

Git 提交信息约束

我们遵守 Conventional Commits 规范,并使用 commit-msg 钩子来约束提交信息。你可以通过简单的配置来启用该功能。

commit_msg:
enabled: true

Git 提交信息追加 Emoji

iGit 提供了 commit-msg 钩子来约束提交信息,并支持根据对应的 type 追加 emoji。

commit_msg:
enabled: true
prependEmoji: true

命令执行

  • 命令按照配置文件中的顺序依次执行
  • 如果任何命令执行失败(返回非零状态码),hook 将终止执行
  • 支持所有 shell 命令和 npm 脚本
  • 在 CI 环境中,可以自动跳过 hook 安装
  • 使用 --skip-install 参数可以手动跳过 hook 安装
  • 执行暂存区文件命令后,文件会自动重新添加到 git 暂存区

最佳实践 💡

1. 代码检查

hooks:
enabled: true
hooks:
pre-push:
- npm run test:coverage
- npm run build
staged_hooks:
enabled: true
rules:
'**/*.{css,scss,less,styl,stylus}': stylelint --fix
'**/*.{js,jsx,ts,tsx}': biome check --write

2. 提交信息规范

使用 commit-msg 确保提交信息符合团队规范:

commit_msg:
enabled: true
prependEmoji: true

常见问题 ❓

Q: 如何跳过 hook 检查?

在特殊情况下,你可以使用 Git 的 --no-verify 选项跳过 hook 检查:

Terminal window
git commit --no-verify -m "your message"
# 或者
git commit -m "your message" -n

Q: hook 执行失败怎么办?

  1. 检查错误信息,修复相关问题
  2. 确保所有命令都能在命令行中正常执行
  3. 检查配置文件中的命令是否正确