Files
2026-07-24 12:01:53 +08:00

2.8 KiB
Raw Permalink Blame History

name, description, allowed-tools
name description allowed-tools
commit 自动生成中文 git commit 信息并提交推送。读取当前改动,用简洁的中文一句话概括改动内容,然后自动执行 git add、commit、push。当用户说"提交""commit""提交代码""推送"时使用。 Bash(git status:*), Bash(git diff:*), Bash(git add:*), Bash(git commit:*), Bash(git push:*), Bash(git log:*), Bash(git branch:*)

自动 commit 并 push

读取当前 git 改动,生成简洁的中文 commit 信息,然后自动提交并推送。

执行步骤

1. 查看当前状态

先了解仓库当前情况:

git status
git diff --stat        # 看改动了哪些文件、改动量
git diff               # 看未暂存的具体改动
git diff --staged      # 看已暂存的具体改动
git log --oneline -5   # 看最近几次提交风格,保持一致

2. 分析改动

基于 diff 内容,理解这次改动实际做了什么

  • 新增了什么功能/文件
  • 修改/修复了什么
  • 删除/重构了什么
  • 是文档、配置还是代码改动

不要凭文件名猜测,要看实际 diff 内容。

3. 生成 commit 信息

要求:

  • 中文,简洁,一句话概括这次改动的核心内容
  • 不要前缀(不用 feat/fix/docs 这种 Conventional Commits 前缀)
  • 直接描述做了什么,动词开头,如"添加 ALNS 自适应大邻域搜索算法"、"修复 POX 交叉中的索引越界问题"、"重构 FJSP 解码逻辑去掉 AGV 部分"
  • 如果一次改动包含多个不相关的事情,提示用户是否要分开提交(但默认仍按一条处理)
  • 长度控制在一行能看完,不写冗长描述

4. 自动提交并推送

确认 commit 信息后,依次执行:

git add -A                          # 暂存所有改动
git commit -m "生成的中文commit信息"
git push                            # 推送到当前分支的远程

5. 处理常见情况

  • 没有改动:如果 git status 显示没有改动,告知用户无需提交,停止
  • push 失败
    • 如果是因为远程有新提交(需要先 pull),告知用户,建议先 git pullgit pull --rebase不要自动强推
    • 如果是没有配置远程或没有 upstream 分支,提示用户,给出 git push -u origin <分支名> 的建议命令
    • 如果是认证问题,告知用户检查凭证
  • 当前在重要分支(如 main/master):正常执行,但在输出里提示一下当前分支名,让用户心里有数

6. 输出

完成后简要报告:

  • 生成的 commit 信息
  • 提交到了哪个分支
  • push 是否成功

注意事项

  • commit 信息必须如实反映 diff 内容,不编造
  • push 失败时不要用 --force 强推,交给用户决定
  • 如果改动很大很杂,主动提示用户考虑拆分提交,但不强制