# Git Local Commit

> 根据当前对话上下文和 Git 实际改动，识别最近未提交内容并静默完成一次本地 commit（不 push）。当用户要求“提交当前改动”“帮我本地 commit”“把本轮修改提交一下”或类似诉求时使用。若本对话中已经提交过，则从当前工作区断点继续，只提交新的未提交内容。

- Skill: `zhanghaopai/git-local-commit` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add zhanghaopai/git-local-commit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zhanghaopai/git-local-commit/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: zhanghaopai (https://skillmd.com/u/zhanghaopai)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/zhanghaopai/git-local-commit

---


# Git Local Commit 本地 Git 提交

## 目标
- 根据当前对话上下文和 `git status`/`git diff` 判断本轮实际修改了哪些文件。
- 优先只提交本轮对话相关改动；对明显无关的改动保持未提交状态。
- 为目标提交内容生成简洁准确的 commit message。
- 静默完成一次本地 `git commit`，不要求用户补充信息，除非存在明显会误提交的风险。
- 不执行 `git push`、不切换分支、不改写历史。

## 工作流
1. 建立断点和改动边界。
- 执行：`git status --porcelain`
- 执行：`git branch --show-current`
- 可执行：`git log -1 --oneline`
- 若结果为空：告知“当前没有新的未提交改动”，结束流程。
- 若本对话中已经运行过本 skill 或类似 commit 流程，不要 `--amend`，不要重复处理已提交内容；以当前 `git status` 剩余内容作为断点继续提交。

2. 识别实际修改文件。
- 执行：`git diff --name-status`
- 若存在已暂存内容，执行：`git diff --cached --name-status`
- 执行：`git diff --stat`
- 对未跟踪文件，以 `git status --porcelain` 中的路径为准；只在生成 message 必要时读取小文件内容。
- 不递归扫描无关目录，不为了 commit 做额外重构或格式化。
- 根据当前对话上下文，把改动分为：本轮相关改动、明显无关改动、无法判断边界的改动。
- 如果能清楚区分，只提交本轮相关改动，明显无关改动保持未提交。
- 如果用户明确要求“提交剩余改动”“提交所有未提交内容”，则以当前剩余工作区改动作为提交目标。
- 如果无法安全区分提交边界，应先向用户确认，不要默认提交全部改动。

3. 生成 commit message。
- 先看当前对话中完成的任务，再用实际文件列表和 diff 校正。
- message 应说明“做了什么”，不要只写“update files”。
- 若对话上下文不足，直接根据文件改动生成 message，不要因为缺少主题而打断用户。
- 优先保持一行 subject；确有必要时用第二个 `-m` 写 1-3 条简短正文。

4. 执行本地提交。
- 默认只暂存目标文件：`git add -- <目标文件路径...>`
- 仅当用户明确要求提交当前全部剩余改动时，才执行：`git add -A`
- commit 前执行：`git diff --cached --name-status`，确认暂存内容符合本次提交目标。
- 执行：`git commit -m "<总结后的 message>"`
- 如果 `git add` 或 `git commit` 因 sandbox/权限限制失败，立即按 Codex 工具规则用同一命令申请 `require_escalated` 后重试；理由只需说明“完成用户要求的本地 Git commit”。
- 不承诺绕过权限系统；目标是在规则允许范围内让提交流程尽量无痛、少打扰。

5. 返回提交结果。
- 至少反馈：分支名、commit short hash、最终 message。
- 可附：`git show --stat --oneline -1` 的关键信息。

## 约束
- 不使用 `--amend`，除非用户明确要求。
- 不使用重置类破坏命令（如 `git reset --hard`）。
- 不执行 `git push`。
- 不创建文档、不改业务文件，只提交当前已有改动。
- 不把明显与本轮对话无关的改动混入提交。
- 若暂存区已有明显无关内容，不直接提交，先向用户确认。
- 只处理“当前未提交内容”的一次性本地提交，不扩展额外流程。

