• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rizon
V2EX  ›  程序员

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

  •  
  •   rizon ·
    othorizon · 14h 2m ago · 815 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

    7 replies    2026-05-20 21:41:28 +08:00
    icanfork
        1
    icanfork  
       13h 58m ago
    啊??
    本来纯的纯分享,虽然非常不咋地,也不能开口打击别人

    没有想到一坨二维码糊我脸上
    rizon
        2
    rizon  
    OP
       13h 54m ago
    @icanfork 哈哈,听劝,删除了
    uqf0663
        3
    uqf0663  
       13h 43m ago
    我最近一个月代码已经 100%是 ai 写的了,然后 ai 也会帮我提交,所以并不缺上下文,比较苦恼的是有时候提交的内容是全英文的有时候是中文的。
    rizon
        4
    rizon  
    OP
       13h 9m ago
    @uqf0663 所以才要用 skill 去更可控的提交。
    而且我不会让 AI 主动提交,我非常依赖 diff ,暂存这些 机制来维护 可靠,可提交,待观察,临时测试 等等这些代码的状态。所以代码我一般不会提交,通过借助暂存和 rewind 机制反复测试不同的代码。最后确认了一版可用的代码后,才会让 AI 去提交代码
    Lax
        5
    Lax  
       11h 55m ago
    @uqf0663 自己补一句:更新 skill,请确保 git 提交使用中文说明。
    runningowl
        6
    runningowl  
       10h 45m ago
    再加上 rtk 节约点 token
    Jokesy
        7
    Jokesy  
       10h 6m 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 或项目定义的最小验证命令。
    - [默认] 小改动使用单行提交信息;复杂改动在正文说明"做了什么"和"为什么做"。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1333 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 23:47 · PVG 07:47 · LAX 16:47 · JFK 19:47
    ♥ Do have faith in what you're doing.