Git Local Commit 本地 Git 提交
目标
- 根据当前对话上下文和
git status/git diff判断本轮实际修改了哪些文件。 - 优先只提交本轮对话相关改动;对明显无关的改动保持未提交状态。
- 为目标提交内容生成简洁准确的 commit message。
- 静默完成一次本地
git commit,不要求用户补充信息,除非存在明显会误提交的风险。 - 不执行
git push、不切换分支、不改写历史。
工作流
- 建立断点和改动边界。
- 执行:
git status --porcelain - 执行:
git branch --show-current - 可执行:
git log -1 --oneline - 若结果为空:告知“当前没有新的未提交改动”,结束流程。
- 若本对话中已经运行过本 skill 或类似 commit 流程,不要
--amend,不要重复处理已提交内容;以当前git status剩余内容作为断点继续提交。
- 识别实际修改文件。
- 执行:
git diff --name-status - 若存在已暂存内容,执行:
git diff --cached --name-status - 执行:
git diff --stat - 对未跟踪文件,以
git status --porcelain中的路径为准;只在生成 message 必要时读取小文件内容。 - 不递归扫描无关目录,不为了 commit 做额外重构或格式化。
- 根据当前对话上下文,把改动分为:本轮相关改动、明显无关改动、无法判断边界的改动。
- 如果能清楚区分,只提交本轮相关改动,明显无关改动保持未提交。
- 如果用户明确要求“提交剩余改动”“提交所有未提交内容”,则以当前剩余工作区改动作为提交目标。
- 如果无法安全区分提交边界,应先向用户确认,不要默认提交全部改动。
- 生成 commit message。
- 先看当前对话中完成的任务,再用实际文件列表和 diff 校正。
- message 应说明“做了什么”,不要只写“update files”。
- 若对话上下文不足,直接根据文件改动生成 message,不要因为缺少主题而打断用户。
- 优先保持一行 subject;确有必要时用第二个
-m写 1-3 条简短正文。
- 执行本地提交。
- 默认只暂存目标文件:
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”。 - 不承诺绕过权限系统;目标是在规则允许范围内让提交流程尽量无痛、少打扰。
- 返回提交结果。
- 至少反馈:分支名、commit short hash、最终 message。
- 可附:
git show --stat --oneline -1的关键信息。
约束
- 不使用
--amend,除非用户明确要求。 - 不使用重置类破坏命令(如
git reset --hard)。 - 不执行
git push。 - 不创建文档、不改业务文件,只提交当前已有改动。
- 不把明显与本轮对话无关的改动混入提交。
- 若暂存区已有明显无关内容,不直接提交,先向用户确认。
- 只处理“当前未提交内容”的一次性本地提交,不扩展额外流程。