
git提交信息也能自动格式化了?committier快速体验
作为开发者,你是不是也有过这些提交代码的烦恼:手动写的Git提交信息格式混乱,团队协作时难以追溯变更;牢记Conventional Commits规范却总在细节上出错;用commitlint校验出问题还要手动修改提交消息;想要添加emoji却发现cz太难配合commitlint了?
最近发现了一款宝藏工具committier,它能直接实现Git提交信息的自动格式化,无需配置就能贴合规范。今天就带大家5分钟快速体验这款工具,彻底告别提交信息的"格式焦虑"。
一、committier是什么?
committier是一款专注于Git提交消息"格式化与修复"的工具,和commitlint的"规则校验"定位不同,它更像提交消息领域的Prettier------不强制约束规则,而是自动优化格式、补充关键信息。
它默认遵循Conventional Commits规范,能智能推断提交类型、作用域,还能自动添加emoji,同时可以和commitlint无缝兼容,形成"格式化+校验"的完整链路,兼顾效率与规范。
据说AI生成提交信息的功能正在开发中,能利用Github Models免费使用,也能接入其他各家AI。
快速安装
committier支持多种安装方式,这里推荐项目级局部安装,适配团队协作场景,步骤超简单:
- 进入项目根目录,安装开发依赖
bash
# 按需选择包管理器,这里以pnpm为例
pnpm add committier -D
- (可选)配置快捷脚本 在
package.json中添加提交快捷命令,后续可一键启动交互式提交:
json
{
"scripts": {
"commit": "committier commit"
}
}
如果只是想临时体验,甚至不用安装,直接通过npx调用:
bash
npx committier <指令>
核心功能快速体验
体验1:提交时自动格式化
这是committier的核心能力,要实现"提交即格式化",需借助husky配置Git钩子,步骤如下:
- 安装husky并初始化
bash
pnpm add husky -D
pnpm husky init
- 配置commit-msg钩子 编辑项目根目录的
.husky/commit-msg文件,添加committier的格式化指令(若有commitlint,需放在其前面):
bash
npx --no -- committier edit $1
# 若有commitlint,保留下方指令,无则可省略
# npx --no -- commitlint --edit $1
配置完成后,咱们来实测效果: 执行常规的提交命令,故意写一个不规范的提交消息:
bash
git add .
git commit -m " FeAT add user login button"
原本松散的消息,会被committier自动格式化为:
bash
✨ feat: add user login button
不仅补全了规范格式,还自动加上了功能类型对应的emoji,效果立竿见影!
体验2:交互式提交CLI
如果不想手动写提交消息,committier内置的交互式CLI能帮你"傻瓜式"生成规范消息,直接执行咱们之前配置的脚本:
bash
pnpm commit
随后会进入问答式流程,只需按提示选择提交类型、填写变更描述,工具就会自动生成符合规范的提交消息:

若想测试流程不实际提交代码,可开启dry-run模式:
bash
pnpm commit --dry-run
体验3:完美配合commitlint
如果你的项目已接入commitlint,只需额外配置一个emoji解析器,就能让两者完美兼容:
- 在
commitlint.config.js中引入committier的解析器:
javascript
import { commitlintEmojiParser } from "committier/commitlint-emoji-parser";
export default {
extends: ["@commitlint/config-conventional"],
parserPreset: commitlintEmojiParser,
};
- 确保钩子执行顺序为
committier在前、commitlint在后,即可先格式化再校验,既保格式又守规则。
深度解析:committier的格式化核心能力
committier的格式化并非简单的"补个符号",而是围绕Conventional Commits规范的全维度自动优化,覆盖提交消息的各个组成部分,且全程无需手动干预。
1. 基础格式自动规整:从"杂乱"到"标准"
committier会自动将任意松散的提交消息,规整为[emoji] type(scope)!: description的标准格式,核心处理包括:
- 符号与空格标准化:自动补全类型(type)与描述(description)之间的冒号+空格,清理多余的换行、空格;
- 大小写与标点优化:默认将描述首字母转为小写(符合Conventional Commits规范),自动移除描述末尾的多余标点;
- 破坏性变更标记处理:若提交消息中包含"BREAKING CHANGE"或手动标注"!",会自动将"!"放在type/scope后,符合规范要求。
示例对比: 手动提交的不规范消息:
bash
git commit -m "FEAT add user login function!! "
经committier格式化后:
bash
✨ feat: add user login function
若包含破坏性变更: 手动提交:git commit -m "fix auth BREAKING CHANGE: token验证逻辑修改" 格式化后:🐛 fix(auth)!: token验证逻辑修改
2. 智能信息补全:无需手动指定type/scope
committier能基于代码变更内容或项目结构,自动推断关键信息,进一步降低手动编写成本:
- 提交类型(type)自动推断:若未指定type,工具会根据变更文件类型/内容(如新增文件→feat、修复bug→fix、配置变更→chore)自动匹配默认type;
- 作用域(scope)自动提取 :开启
autoScope配置后,可从monorepo工作区包名(如packages/button→button)、变更文件所属目录(如src/components/table→table)自动提取scope; - 空值自动补全:若提交消息仅写了核心描述(如"修改登录逻辑"),会自动补全默认type(如fix),避免消息缺失关键维度。
示例 : 开启autoScope: "replaceToPackageName"后,在monorepo的packages/button目录提交:
bash
git commit -m "优化按钮样式"
格式化后:
bash
🐛 fix(button): 优化按钮样式
3. 正文与脚注格式化:保持结构整洁
除了提交标题(subject),committier还会优化提交消息的正文(body)和脚注(footer):
- 自动为正文/脚注补充空行分隔,符合"标题空一行+正文+空一行+脚注"的规范结构;
- 清理正文/脚注中的多余缩进、重复换行;
- 保留脚注中的关键标记(如
Closes #123、BREAKING CHANGE:),确保关联issue、变更说明不丢失。
自定义配置
如果默认的emoji或提交类型不符合团队习惯,可快速修改配置。在项目根目录新建committier.config.js,示例如下:
javascript
import { defineConfig } from "committier";
export default defineConfig({
// 关闭自动emoji(默认开启)
autoEmoji: false,
// 自动从工作区包名推断作用域
autoScope: "replaceToPackageName",
// 修改默认提交类型为feat
defaultType: "feat"
// 开启自动生成默认描述信息来兜底
defaultDescription: true
});
committier支持多种格式的配置文件,哪怕只改个别字段,也能轻松覆盖默认行为。
体验总结
committier最打动我的点,在于零配置起步+无感格式化 5分钟就能完成接入,提交代码时无需额外操作,就能自动生成规范的提交消息,既降低了团队规范落地的门槛,又节省了手动调整格式的时间。
不管是个人小项目还是多人协作的大型项目,这款工具都能显著提升提交信息的质量和开发效率,还没试过的朋友不妨赶紧体验一波!