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

5 月 20 日
 rizon

其实大多数人都不会好好写 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:

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


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

2284 次点击
所在节点    程序员
9 条回复
icanfork
5 月 20 日
啊??
本来纯的纯分享,虽然非常不咋地,也不能开口打击别人

没有想到一坨二维码糊我脸上
rizon
5 月 20 日
@icanfork 哈哈,听劝,删除了
uqf0663
5 月 20 日
我最近一个月代码已经 100%是 ai 写的了,然后 ai 也会帮我提交,所以并不缺上下文,比较苦恼的是有时候提交的内容是全英文的有时候是中文的。
rizon
5 月 20 日
@uqf0663 所以才要用 skill 去更可控的提交。
而且我不会让 AI 主动提交,我非常依赖 diff ,暂存这些 机制来维护 可靠,可提交,待观察,临时测试 等等这些代码的状态。所以代码我一般不会提交,通过借助暂存和 rewind 机制反复测试不同的代码。最后确认了一版可用的代码后,才会让 AI 去提交代码
Lax
5 月 20 日
@uqf0663 自己补一句:更新 skill,请确保 git 提交使用中文说明。
runningowl
5 月 20 日
再加上 rtk 节约点 token
Jokesy
5 月 20 日
@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
5 月 21 日
我也有个 git commit 专用的 skill , 内容有点多, 大概三页,都是实际踩坑之后叫 AI 更新的,
UB
5 月 21 日
https://www.skills.sh/github/awesome-copilot/git-commit

我之前一直在用这个,楼主的不知道跟这个有哪些区别呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1214196

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX