拯救词穷:一个提效 git 工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Aleks
V2EX    分享创造

拯救词穷:一个提效 git 工具

  •  
  •   Aleks
    AleksChen 22 天前 1911 次点击

    项目地址https://github.com/alekschen/ai-commit

    作为开发者,我们都经历过这样的时刻:辛辛苦苦写完了一天的代码,到了提交的时候,大脑却一片空白。最后只能草草写下 fix bugupdate 或者 temp 这种毫无意义的提交信息。

    过段时间回看 git log,完全想不起来当时改了什么。

    今天向大家推荐一款开源神器 AI Commit (@alekschen/ai-commit)。它能根据你的 git diff 自动生成符合 Conventional Commits 标准的提交信息,而且最重要的是:它绝对安全,隐私优先

    running.gif

    核心亮点:为什么选择 AI Commit ?

    1. 极致的安全与隐私保护

    在引入 AI 工具辅助编程时,代码安全是所有开发者最关心的问题。AI Commit 在设计之初就将隐私放在了第一位:

    • 零中间商:你的代码变更( Diff )直接发送至你配置的 API 提供商(如 OpenAI 、DeepSeek 、Azure 等)。
    • 无追踪:没有任何中间服务器,没有数据收集,没有用户行为追踪。
    • 完全开源:代码 100% 开源,随时欢迎审计,没有任何后门。
    • 本地存储:API Key 等配置信息仅存储在你本地的机器上。

    2. 遵循 Conventional Commits 标准

    不仅是写出“人话”,更是写出“标准话”。生成的提交信息自动遵循行业标准格式:

    • feat: 新功能
    • fix: 修补 Bug
    • docs: 文档改变
    • refactor: 代码重构 ...以及更多。

    3. 全球化与高度定制

    • 多语言支持:支持输出 中文、英语、日语、韩语等多种语言的提交信息。
    • 模型自由:不局限于 GPT-3.5 ,你可以配置使用 GPT-4 、DeepSeek 、Azure OpenAI 等任何兼容 OpenAI 接口的模型。
    • 自定义 Prompt:觉得默认风格太严肃?你可以切换成 Emoji 风格,或者编写自己的 Prompt 模板。

    工作原理 (How it works)

    AI Commit 的工作流程简洁而高效。它充当了你的 Git 环境与大语言模型之间的本地安全桥梁

    以下是其核心处理流程图:

    zh_uml.png

    从图中可以看到,代码数据的流动是点对点的(从你的电脑 -> API 提供商),ai-commit 仅仅是一个运行在本地的“搬运工”和“翻译官”,确保了数据链路的最短和最安全。


    快速上手

    1. 安装

    确保你的 Node.js 版本 >= 18.0.0:

    npm install -g @alekschen/ai-commit 

    2. 配置

    设置你的 API Key (支持 OpenAI 或兼容服务商):

    ai-commit config 

    在交互式菜单中,你可以设置 API 地址、Key 、模型偏好以及输出语言(记得选中文!)。

    3. 使用

    当你修改完代码并 git add 后,只需输入:

    ai-commit 

    工具会立即分析你的变更,并给出几个生成的提交建议。你可以:

    • 回车:直接使用。
    • 编辑:微调生成的信息。
    • 重新生成:换个说法。

    成本尽在掌握

    担心 Token 用超了? AI Commit 内置了统计功能。

    运行 ai-commit cost,你可以清晰地看到:

    • 你使用了多少 Token 。
    • 调用了多少次 API 。
    • 估算的费用消耗。

    结语

    写代码是创造性的工作,写 Commit Message 则是重复性的劳动。把重复的工作交给 AI ,把精力留给核心逻辑。

    AI Commit 不仅是一个工具,更是你代码仓库的“管家”,帮你维护一份清晰、规范、可追溯的历史记录。

    项目地址https://github.com/alekschen/ai-commit
    如果你觉得好用,欢迎给项目点个 Star !

    12 条回复    2025-12-18 21:49:48 +08:00
    xjiang1982154112
        1
    xjiang1982154112  
    PRO
       22 天前
    程序员最怕的两件事
    1 、取变量名
    2 、写 commit message
    Aleks
        2
    Aleks  
    OP
       22 天前
    @xjiang1982154112 打磨工具,我自己用了很久,现在提交代码不苦恼了。以前最烦这个了
    iyeatse
        3
    iyeatse  
       22 天前 via iPhone   1
    一直都用 claude code ,直接说 commit and push 就行;
    Fork app 好像也有这个功能
    SilencerL data-uid=
        4
    SilencerL  
       22 天前   2
    idealx
        5
    idealx  
       22 天前
    这个功能是现代的 AI IDE 的标配了
    94
        6
    94  
       21 天前
    > 辛辛苦苦写完了一天的代码,到了提交的时候,大脑却一片空白。

    所以才要小步提交,干完一件事就提交一次,而不是把一天所有输出的内容在一个 Commit 中一下子全提交上去……
    如果嫌提交的 commit 太多了,最后在 MR/PR 之前用 squah 把相关的 commsit 合并起来。
    Aleks
        7
    Aleks  
    OP
       21 天前
    @94 小步提交自己写也很心累。工具结合暂存区文件摘要生成三个,人来选,不满意再修改就好了。
    Aleks
        8
    Aleks  
    OP
       21 天前
    @idealx 是的,Github Copilot 、Cursor 、Antigravity 和 CC 都有自动生成 message 的功能,实现原理都是一样。
    94
        9
    94  
       21 天前
    @Aleks #7 ,还好吧,就说一下这个是什么功能,或者修了什么 bug 就行了。简短明了,也不用说的很清楚。
    按照格式第一行是 title ,第三行开始才是 details 。

    毕竟在写代码的时候其实就是知道自己现在在干什么的。很多时候我可能都会先写好 Commit Message 再开始写代码。因为叉出来的分支就已经是 `fix/dashboard-charts-style-issue` 的形式了

    大部分情况都是简单的 `fix(dashboard): 修复 XX 图表的显示问题`。
    如果没有特别需要备注的就是直接提交了,如果有一些特殊备注才会另起一行单独写内容。
    ```
    fix(dasboard): 修复 XX 图表的显示问题

    - 修复遇到页面缩放时图表文字过大;
    - 修复多图表标题未联动;
    ```

    但其实这些 details 应该在提交的时候拆开来提交,最后在 squash 的时候,再把一些小步提交的信息放到 details 中,然后标题就是简单的概括成是 “fix(dasboard): 修复 XX 图表的显示问题”。
    Aleks
        10
    Aleks  
    OP
       21 天前
    /div>
    @94 #9 先写好 Commit Message 再开始写代码。这种范式蛮牛的,我还是头一次听说。改动问题边界清晰可预判的情况,这样没问题的。

    但对于一些改动量大,没有及时拆分成小步提交的情况下,用 AI 省事一些。人写 message 其实和 AI 写是一样的,AI 只是把流程自动化了。二者本质上一样的,只是行为主体不一样。
    94
        11
    94  
       21 天前
    @Aleks #10 ,习惯一个好的工作流很重要。某一个调整的改动量大没关系,但没有小步提交/限制影响范围的话,可能会在发布环节造成困扰。

    以前经常会遇到一些同事在开发的时候用一个提交混合了几个调整,或者用一个分支去开发多个功能或者调整。
    如果有一些因为测试没通过,或者临时决定暂停开发。就会拖累其他的功能的正常发布。
    虽然可以通过 rebase 调整或者拆分单一开发分支来解决。但是如果遇到一个提交中包含了多个调整的情况,那么就很麻烦了。特别是遇到两个功能还改到同一个文件,真的会麻烦。很多人不知道要怎么去操作。
    所以在前期稍微麻烦一下,后面就算遇到问题也会容易解决起来。

    -----
    用简短的话去描述,大部分开发同事都是可以的,但遇到总结汇报真的是大部分开发同事的噩梦,很多还有数字要求。所以我一般在这个阶段用 AI 读 Git Commit 去写工作总结
    bbbb
        12
    bbbb  
       21 天前
    有了 cursor ,这个问题也就没有了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3617 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 05:07 PVG 13:07 LAX 21:07 JFK 00:07
    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