其实大多数人都不会好好写 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 再暗藏什么玄机,以防万一还是去了吧。

