分享一个我自用的 git 提交的 skill(提高提交信息质量和 AI 检索效率) - V2EX
请不要在回答技术问题时复制粘贴 AI 生成的内容
rizon

分享一个我自用的 git 提交的 skill(提高提交信息质量和 AI 检索效率)

  •  
  •   rizon
    othorizon 1 day ago 1335 views

    其实大多数人都不会好好写 git 提交信息,甚至有些人根本不写,直接用默认的 "Update" 或 "Fix bug" 之类的提交信息。

    虽然现代码都不是人写的了,但是 git 提交信息除了提高可维护、团队协作,其实也很方便 AI 追踪排查问题,还是很重要的。

    我过去都是用 vscode 自带的提交信息生成,但是那个缺少模型对话的上下文,生成效果不好,所以还是用一个 skill 比较好。

    这个 skill 有几个注意事项我写到后面了。

    --- description: 智能提交:有暂存文件则提交暂存内容,否则提交所有已追踪的改动,使用中文提交信息 argument-hint: "[可选的补充说明,会作为提交信息的参考]" allowed-tools: Bash(git status:*), Bash(git diff:*), Bash(git add:*), Bash(git commit:*), Bash(git log:*) --- # git-commit 根据下面的规则提交当前仓库的改动,**只提交、不要 push**。 ## 当前 Git 状态 - 分支与状态:!`git status --short --branch` - 已暂存文件:!`git diff --cached --name-only` - 已暂存改动概览:!`git diff --cached --stat` - 工作区未暂存改动概览:!`git diff --stat` - 最近 5 条提交(用于参考提交信息风格):!`git log --oneline -5` ## 提交规则 1. **判断是否有暂存文件**:若上面「已暂存文件」列表非空,说明用户已自行选择了提交范围 **只提交这些已暂存的文件,不要再`git add` 任何东西**。 2. **没有暂存文件时**:执行 `git add -u` 暂存所有「已被 Git 追踪」的修改与删除(**不包含新增的未追踪文件**),然后提交。 3. 提交前用 `git diff --cached` 查看完整暂存内容,确保提交信息准确反映真实改动。 4. **提交信息用简体中文**,遵循仓库已有风格(参考上面最近的提交): - 首行:`<类型>: <一句话概述>`(类型如 feat / fix / refactor / chore / docs / style 等,按改动性质选择) - 如改动较多,空一行后用 `-` 列出要点 - 若用户在 `$ARGUMENTS` 中提供了补充说明,将其作为概述的重要参考 - 提交信息末尾追加一行: ``` Commit-By: {your app name ,your model name} ``` 5. **边界情况**: - 若按规则确定后仍没有任何可提交的内容(工作区干净),直接告知用户「没有可提交的改动」并停止,不要创建空提交。 - 不要使用 `git commit --amend`、不要 `git push`、不要新建分支或切换分支。 - 若存在合并冲突标记或仓库处于 rebase/merge 中,停止并提示用户先处理。 6. 提交完成后,运行 `git log --oneline -1` 和 `git status --short`,向用户简要汇报:提交哈希、提交信息首行、本次提交了哪些文件。 用户补充说明(可能为空):$ARGUMENTS 

    注意 1:

    这个技能会先判断是否有暂存的代码: 如果有,则本次只提交暂存代码 否则才是自动暂存所有已追踪的改动并提交

    注意 2:

    • 提交信息末尾追加一行:

      Commit-By: {your model name} 

    skill 里这部分原本是为了区分是哪个 agent 和 model 的提交。但我实际使用时删除了。 原因就是臭名昭著的 Claude Code 根据提交信息把订阅变 API 付费的那个“BUG”,我担心哪家 agent 再暗藏什么玄机,以防万一还是去了吧。


    原文: https://mp.weixin.qq.com/s/xSIjHieT53DtMYnmNIVzvw

    9 replies    2026-05-21 13:55:49 +08:00
    icanfork
        1
    icanfork  
       1 day ago
    啊??
    本来纯的纯分享,虽然非常不咋地,也不能开口打击别人

    没有想到一坨二维码糊我脸上
    rizon
        2
    rizon  
    OP
       1 day ago
    @icanfork 哈哈,听劝,删除了
    uqf0663
        3
    uqf0663  
       1 day ago
    我最近一个月代码已经 100%是 ai 写的了,然后 ai 也会帮我提交,所以并不缺上下文,比较苦恼的是有时候提交的内容是全英文的有时候是中文的。
    rizon
        4
    rizon  
    OP
       1 day ago
    @uqf0663 所以才要用 skill 去更可控的提交。
    而且我不会让 AI 主动提交,我非常依赖 diff ,暂存这些 机制来维护 可靠,可提交,待观察,临时测试 等等这些代码的状态。所以代码我一般不会提交,通过借助暂存和 rewind 机制反复测试不同的代码。最后确认了一版可用的代码后,才会让 AI 去提交代码
    Lax
        5
    Lax  
       1 day ago
    @uqf0663 自己补一句:更新 skill,请确保 git 提交使用中文说明。
    runningowl
        6
    runningowl  
       1 day ago
    再加上 rtk 节约点 token
    Jokesy
        7
    Jokesy  
       1 day ago
    @uqf0663 CLAUDE.md 定义写死 ,优先级 设置为 [必须的]


    ## Git 策略

    - [必须] 允许使用:`git status`、`git diff`、`git log`、`git branch`、`git show`。
    - [必须] 允许 `git commit`,但执行前必须征得用户确认。
    - [必须] 禁止 `git push`、`git merge`、`git rebase`、`git reset --hard`。
    - [必须] 禁止使用会丢弃用户改动的命令,除非用户明确批准。
    - [必须] 发现非本人造成的意外变更时,立即停止并询问用户。
    - [必须] 不 amend commit ,除非用户明确要求。

    ## 提交规范

    - [必须] 使用中文语言约定式提交:`<type>(<scope>): <subject>`。
    - [必须] `type` 只使用:`feat`、`fix`、`docs`、`style`、`refactor`、`test`、`chore`、`perf`。
    - [必须] 主题最多 50 个字符,使用命令语气,不加句号。
    - [必须] 不同问题拆成多个小而聚焦的提交。
    - [优先] 每次提交前运行 linter 或项目定义的最小验证命令。
    - [默认] 小改动使用单行提交信息;复杂改动在正文说明"做了什么"和"为什么做"。
    lel020
        8
    lel020  
       1 day ago
    我也有个 git commit 专用的 skill , 内容有点多, 大概三页,都是实际踩坑之后叫 AI 更新的,
    UB
        9
    UB  
       1 day ago
    https://www.skills.sh/github/awesome-copilot/git-commit

    我之前一直在用这个,楼主的不知道跟这个有哪些区别呢
    About     Help     Advertise     Blog     API     FAQ     Solana     5782 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 06:16 PVG 14:16 LAX 23:16 JFK 02:16
    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