commitizen,cz-git,husky 三者区别

工具 作用 类比
Commitizen(cz) 提供一个命令行工具,让你用选择题方式填写提交信息 "提交信息输入界面"
cz-git Commitizen 的更好看的适配器,定义提交格式 "提交信息模板 + UI"
Husky Git 钩子工具,在提交前/提交后自动执行脚本 "大门保安,检查是否允许提交"

🔍 详细解释

1️⃣ Commitizen ------ 工具

👉 帮助你用交互式命令行来写 git commit

比如:

javascript 复制代码
npx cz

会出现选择题形式:

javascript 复制代码
? Select the type of change:
  feat
  fix
  docs
  refactor
  chore
  ...

目的:让开发者不需要自己思考 commit message 规则。

本质就是:

  • 替代 git commit -m "xxx"

  • 引导你一步一步填写内容

2️⃣ cz-git ------ Commitizen 的适配器(插件)

Commitizen 本身只是一个外壳,需要由"适配器"提供 实际的提交流程 UI 和规则

你可以理解:

  • Commitizen = 车

  • cz-git = 引擎 + 内饰 + 操作界面

cz-git 的特点:

✔ UI 好看

✔ 自动带 emoji 😍

✔ 可自定义 types、scopes、主题

✔ 支持中文

✔ 更符合现代前端规范

例如:

javascript 复制代码
🚀 feat:   A new feature
🧩 fix:    A bug fix
📚 docs:   Documentation changes

它让"选择题式 commit"更好用。

3️⃣ Husky ------ Git 钩子工具

它和 Commitizen、cz-git 完全不是一个类型。

👉 Husky 用来拦截 Git 提交

你可以让它做:

  • git commit 时自动运行 commitlint(验证提交格式)

  • git push 前自动跑测试

  • 在提交前自动运行 Prettier、ESLint

例如:

javascript 复制代码
.git/hooks/pre-commit
.git/hooks/commit-msg

开发者不能跳过这些检查。

例如 commit-msg 钩子:

javascript 复制代码
npx husky add .husky/commit-msg "npx commitlint --edit \$1"

效果:

⛔ 如果提交格式不符合规则 → 拦截

✔ 只有符合规范的 commit 才能提交

🔥 三者关系图(关键)

javascript 复制代码
             ┌────────────────────────────┐
             │        Commitizen          │
             │  (提供选择题输入界面)     │
             └────────────┬──────────────┘
                          │
                          ▼
             ┌────────────────────────────┐
             │          cz-git            │
             │   (定义 commit 规范模板)  │
             └────────────┬──────────────┘
                          │ 写出的 commit message
                          ▼
             ┌────────────────────────────┐
             │           Husky            │
             │  在 commit-msg 钩子里执行   │
             │         commitlint         │
             │   (检查 message 是否合规) │
             └────────────────────────────┘

Commitizen + cz-git = 写出规范 commit
Husky + commitlint = 强制不规范 commit 提交失败

📌 为什么它们需要一起用?

✔ Commitizen + cz-git

提供好看的 UI,帮助你写规范的 commit。

✔ 但用户可能不用 cz,而直接写 commit...

比如有人直接写:

javascript 复制代码
git commit -m "update"

这会破坏 commit 规范。

所以才需要:

✔ Husky + commitlint

强制检查每个 commit message 是否合规。

不合规则报错:

javascript 复制代码
⛔ type may not be empty

🎉 最终效果(大厂标准)

你现在可以做到:

✔ 每次 commit 必须使用规范格式

✔ 自动提示填写 commit message

✔ 自动对提交做 lint / prettier 格式化

✔ 避免垃圾 commit message

✔ 代码库清晰、可维护

✔ 完全符合 Angular / Vite / Vue / React 官方规范

这是 高质量团队 必备的工程化流程。

相关推荐
爱奥尼欧5 小时前
【Git】远程分支删了本地还在、两个分支历史不相干?两招故障排解
开发语言·git
Java后端的Ai之路5 小时前
Git冲突完整排查与实战:本地修改覆盖报错到成功推送全流程复盘
开发语言·人工智能·git·python·pop
一个心烑5 小时前
配置项目git的 SSL 证书
git·网络协议·ssl
IT从业者张某某13 小时前
【鸿蒙PC命令行适配】GitUI 移植的工程实践:双 Git 引擎(libgit2/gitoxide)的鸿蒙适配之路
git·华为·harmonyos
xinjia_ctrl17 小时前
暑假实习总结
git·后端·spring·maven·intellij-idea
Molesidy20 小时前
【Git】分别给出添加到Keil工程和IAR工程中的gitnore文件以便不跟踪编译文件的git记录
git·vscode·插件
颜颜yan_1 天前
Git Cola 鸿蒙 PC 版适配全记录:从 Qt 桌面工具到 ArkTS 原生应用
git·qt·harmonyos
知福致福1 天前
【技术复盘】Git 分支污染与提交污染事故排查与解法
大数据·git·elasticsearch
ai安歌1 天前
Git Extensions 鸿蒙 PC 适配全记录:从 WinForms 客户端到 ArkUI 原生工作台
git·华为·harmonyos