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 buildstaged_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 检查:
git commit --no-verify -m "your message"# 或者git commit -m "your message" -n
Q: hook 执行失败怎么办?
- 检查错误信息,修复相关问题
- 确保所有命令都能在命令行中正常执行
- 检查配置文件中的命令是否正确