分析当前工作目录的 Git 仓库状态,包括最近 commit 历史、变更文件、分支信息和 diff。当用户询问"最近改了什么"、"有哪些提交"、"代码变更"、"git 历史"等问题时使用。
Install
npx skillscat add onewaymyway/mini-agent/git-context Install via the SkillsCat registry.
SKILL.md
Git Context Skill
帮助 agent 系统性地读取并理解当前工作目录的 Git 仓库状态,从而准确回答用户关于代码变更、提交历史、文件改动的问题。
使用时机
当用户提出以下类型的问题时,激活本 skill:
- "最近有哪些 commit?"
- "改了哪些文件?"
- "这个版本和上个版本有什么区别?"
- "帮我看看 git 历史"
- "最近的代码变更是什么"
- 需要根据 git 信息做代码审查、生成 changelog、分析影响范围时
信息采集步骤
按顺序执行以下命令,用 bash 工具采集 git 信息:
Step 1:确认 git 仓库
git -C <工作目录> rev-parse --show-toplevel 2>&1若返回错误(not a git repository),直接告知用户当前目录不是 git 仓库,终止流程。
Step 2:获取当前分支和状态概览
# 当前分支
git branch --show-current
# 简洁状态(暂存区 + 工作区未提交变更)
git status --shortStep 3:查看最近 commit 列表
# 最近 10 条 commit,单行格式,含相对时间
git log --oneline --graph --decorate -10
# 若用户指定了条数或时间范围,调整 -10 或加 --since 参数
# 例:--since="7 days ago" / --since="2024-01-01"Step 4:获取每个 commit 的变更文件
# 每个 commit 改动了哪些文件(统计模式,不含具体内容)
git log --stat -5 --format="%H %s (%ar)"
# 或者用 --name-status 获取操作类型(A=新增, M=修改, D=删除, R=重命名)
git log --name-status -5 --format="%ncommit %H%n%s%n%ar"Step 5:查看具体 diff(按需)
# 最近一次 commit 的完整 diff
git show HEAD --stat
# 两个 commit 之间的 diff(若用户指定范围)
git diff <commit-a>..<commit-b> --stat
# 特定文件的历史变更
git log --follow -p -- <文件路径>
# 当前未提交的变更 diff
git diff HEADStep 6:获取远端同步状态(可选)
# 本地领先/落后远端多少 commit
git rev-list --left-right --count origin/HEAD...HEAD 2>/dev/null结果呈现规范
收集完信息后,按以下结构组织回答:
1. 仓库概况
- 当前分支名
- 最新 commit 的 hash(前 7 位)、标题、时间
- 是否有未提交的变更(working tree dirty)
2. 最近 N 条 commit 摘要
以表格或列表形式展示,字段包括:
| commit | 时间 | 提交信息 |
|---|---|---|
a3f2c1d |
2 hours ago | fix: 修复登录验证逻辑 |
3. 文件变更汇总
按文件路径分组,标注操作类型:
Msrc/auth/login.py — 修改Atests/test_login.py — 新增Dlegacy/old_auth.py — 删除
若文件数量较多(>20),优先展示变更行数最多的文件。
4. 关键 diff(仅用户明确要求时)
展示具体代码变更,用 markdown 代码块包裹,注明文件名。
常用参数组合速查
| 用户意图 | 推荐命令 |
|---|---|
| 最近 N 条提交 | git log --oneline -N |
| 某天之后的提交 | git log --oneline --since="YYYY-MM-DD" |
| 某个文件的历史 | git log --oneline -- <path> |
| 两个版本间的差异 | git diff v1.0..v2.0 --stat |
| 某次 commit 的完整变更 | git show <hash> |
| 当前未暂存的改动 | git diff |
| 已暂存但未提交的改动 | git diff --cached |
| 查找包含关键词的提交 | git log --oneline --grep="<keyword>" |
| 查找某行代码何时引入 | git log -S "<code-snippet>" --oneline |
注意事项
- 大仓库性能:
git log -p(含 diff 内容)在大仓库可能很慢,优先用--stat代替,只在用户明确要查看 diff 时才展开。 - 二进制文件:diff 中出现
Binary files differ时,仅报告文件名和操作类型,不展示内容。 - 敏感信息:若 diff 中出现疑似密钥、密码(如
sk-、password=、token=),在展示时打码或提示用户注意安全。 - Detached HEAD:若当前处于 detached HEAD 状态,在概况中明确说明,并显示当前 HEAD 指向的 commit。
- 子模块:若仓库包含 git submodule,需要分别对每个子模块运行上述命令(
git submodule foreach)才能获得完整信息。
与其他 skill 的协作
- 配合 python-expert skill:在分析 Python 文件变更后,可进一步解释代码逻辑含义
- 配合 agent-generator skill:基于 git diff 分析影响面,决定是否需要拆分子任务并行处理