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 官方规范

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

相关推荐
realhuizhu16 小时前
你的Git提交记录是“代码史诗”,还是“只有上帝能看懂的天书”?
git·版本控制·团队协作·ai工具·提示词工程
Mr YiRan18 小时前
Git “cherry-pick“ 命令详解和应用场景
git
星月心城20 小时前
git提交代码时所遇问题
大数据·git·elasticsearch
Dolphin_海豚20 小时前
到底是选 merge 还是选 rebase
git·面试·程序员
云和数据.ChenGuang21 小时前
采集Git相关日志(结合Filebeat)
大数据·git·elasticsearch
苹果电脑的鑫鑫1 天前
git如何撤销上次上传的内容
大数据·git·elasticsearch
Sapphire~1 天前
Git --- Local Changes Prevent from Pull
git
UX20171 天前
Git LFS 管理 Unity 大文件
git·unity
bad-Lz1 天前
git代码库管理
大数据·git·elasticsearch
YMGogre1 天前
GitHub 仓库管理员
git·github