写了个小工具: AI 自动生成 Git Commit Message,一行命令安装 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
gefangshuai
V2EX    分享创造

写了个小工具: AI 自动生成 Git Commit Message,一行命令安装

  • &nbp;
  •   gefangshuai 3 月 6 日 1700 次点击
    这是一个创建于 38 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每次写 commit message 都很纠结?写得太随意又不规范?

    做了一个命令行工具 ai-commit,自动分析 git diff,调用大模型生成 Conventional Commits 格式的提交信息。

    效果

    $ git add . $ ai-commit 正在生成 commit message... ────────────────────────────────────────────────── feat(auth): add JWT token refresh mechanism ────────────────────────────────────────────────── ? 请选择操作: 确认提交 编辑后提交 重新生成 取消 

    安装

    curl -fsSL https://raw.githubusercontent.com/lifedever/ai-commit/main/install.sh | bash 

    需要 Node.js >= 18 ,一行搞定。

    配置

    只需要一个环境变量,配置你的 API Key:

    # DeepSeek (默认) export AI_COMMIT_API_KEY="sk-your-key" # 也支持 OpenAI 、火山引擎、Ollama 等任何 OpenAI 兼容 API 

    特点

    • 零配置即用 默认 DeepSeek ,配一个 Key 就能跑
    • Conventional Commits 自动生成 feat/fix/docs/refactor 等规范格式
    • 交互式确认 生成后可以确认、编辑、重新生成或取消
    • 中英文 ai-commit -l zh 生成中文 commit message
    • 模型随意切 支持任何 OpenAI API 兼容服务( DeepSeek 、OpenAI 、火山引擎、Ollama 本地模型等)
    • 更新/卸载 ai-commit --update 更新,ai-commit --uninstall 卸载

    常用命令

    ai-commit # 交互式生成并提交 ai-commit -y # 跳过确认直接提交 ai-commit -d # 只看生成结果不提交 ai-commit -l zh # 中文 commit message ai-commit --update # 更新到最新版 

    GitHub: https://github.com/lifedever/ai-commit

    MIT 开源,TypeScript 写的,代码很简单。欢迎 Star 、提 Issue 、PR 。

    第 1 条附言    3 月 7 日
    看到大家说现在 ide 或者 Agent 都带这功能,确实如此,而且本人也是一直在用。但为什么要独立开发这个小工具呢,是因为有脱离 ide 或者 Agent 提交代码的需求,或者通过脚本自动提交代码,所以就把这功能简单封装了一下。谢谢大家捧场
    第 2 条附言    3 月 7 日

    https://cdn.jsdelivr.net/gh/lifedever/images@master/uPic/2026/03/CleanShot%202026-03-07%20at%2020.07.03@2x.png

    第 3 条附言    3 月 8 日

    已增加claude code Provider支持!

    13 条回复    2026-03-07 10:15:02 +08:00
    duhbbx1119
        1
    duhbbx1119  
       3 月 6 日
    这个不是直接使用 Claude code 吗
    gefangshuai
        2
    gefangshuai  
    OP
       3 月 6 日
    @duhbbx1119 #1 适合外置用
    0x0x
        3
    0x0x  
       3 月 6 日 via Android
    这个场景一年前应该还有些市场,现在已经没人用了吧。
    用 cursor 类的 ide ,都自带了
    用 Claude Code 等 cli ,写个 skill 就可以了
    ferock
        4
    ferock  
    PRO
    &nsp;  3 月 6 日 via Android
    idea 各种插件都有这个功能,cc 直接 skill
    passion336699
        5
    passion336699  
       3 月 6 日
    现在写一个 command, 两句话就行了吧...

    创建符合 Conventional Commits 规范的 git commit 。

    不要添加任何广告, 禁止在提交信息中添加任何广告或推广链接,例如 "Generated with [Claude Code]( https://claude.ai/code)"
    wkdwkd2023
        6
    wkdwkd2023  
       3 月 6 日
    cursor 直接写个 skills ,调用的时候还能读取本地的 rules 顺手做个 code review
    ratazzi
        7
    ratazzi  
       3 月 7 日
    https://github.com/ratazzi/git-plan
    我已经直接写了个 非交互式的工具让 AI 自动提交
    sn0wdr1am
        8
    sn0wdr1am  
       3 月 7 日
    IDE 自带智能 commit 功能了。
    Moishine
        9
    Moishine  
       3 月 7 日
    cursor 里面敲一个 commit push ,它自己就完成了
    pill
        10
    pill  
       3 月 7 日 via iPhone
    Viscose 不是自带这玩意儿吗
    AoEiuV020JP
        11
    AoEiuV020JP  
       3 月 7 日
    感觉这种方案 AI 会从 diff 中读取到很多不重要的东西, 重心跑偏,总会写上一些没用的信息,
    所以我现在直接让 AI 写完代码自己提交,commit log 就写的非常好,
    gefangshuai
        12
    gefangshuai  
    OP
       3 月 7 日
    @Moishine #9 适合外置用
    gefangshuai
        13
    gefangshuai  
    OP
       3 月 7 日
    @sn0wdr1am #8 适合外置用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5527 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 08:05 PVG 16:05 LAX 01:05 JFK 04:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86