背景
在日常开发工作中,git commit 和 push 是每个开发者都需要频繁执行的操作。传统的流程通常是:
- 查看代码变更:
git status、git diff - 暂存变更:
git add . - 编写 commit message:需要思考如何简洁准确地描述本次变更
- 提交代码:
git commit -m "message" - 推送到远程:
git push
这个过程虽然不复杂,但每次都需要手动编写 commit message,有时候为了写一个合适的 commit message 还要思考半天。特别是在快速迭代开发时,频繁的提交操作会打断开发节奏。
AI 时代的到来,让这个问题有了更好的解决方案。我尝试使用 Cursor 和 Claude 这两个 AI 工具来自动化完成代码提交和推送的流程,大大提升了开发效率。
Cursor Command Push
Cursor 是我最常用的 AI 的代码编辑器,支持自定义命令(Commands)来扩展功能。我创建了一个名为 push 的命令来自动完成代码提交和推送。
命令配置
命令文件位置:~/.cursor/commands/push.md
1
2
3
4
| # push
1. 根据当前的修改创建新的 commit,并将 commit 推送到远程的跟当前一致的分支。
2. git commit 内容采用中文。
|
这个命令的配置非常简单,主要定义了三个要点:
- 自动分析当前修改并创建 commit
- 推送到当前分支对应的远程分支
- commit message 使用中文
使用方式
在 Cursor 中,只需要:
- 完成代码修改
- 在 Agent 对话框中输入
push 命令 - Cursor 会自动分析代码变更,生成合适的 commit message,并执行提交和推送
个人感受
该方式已经能满足我的要求,同样的方式可以用在 Qoder 中。
由于每执行一次都会消耗 Cursor 的 request,而 cursor request 相对比较珍贵,我决定寻找其他的替换方案。
Claude Code Skill Push
Claude Code 中可以直接对接各类第三方的 AI OpenAPI,我决定使用 Claude Code 的 Skill 功能来实现一个命令行版的代码自动提交功能。
Skill 配置
Skill 文件位置:~/.claude/skills/push/SKILL.md
文件内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
| ---
name: push
description: 自动分析代码变更,生成 commit message 并推送到远程。当用户说"push"、"提交"、"推送代码"时使用。
---
# Push - 自动 Git 提交推送
一键完成代码提交和推送,自动化执行,无需用户确认。
**重要**: 每个步骤执行前后必须输出日志,确保用户能看到执行进度。
## 执行流程(必须逐步输出日志)
### 步骤 1: 检查仓库状态
输出: `[1/5] 检查仓库状态...`
执行: `git status`
输出结果摘要(几个文件修改、新增、删除)
### 步骤 2: 分析变更内容
输出: `[2/5] 分析变更内容...`
执行: `git diff --stat`
输出: 变更文件数和行数统计
### 步骤 3: 生成 Commit Message
输出: `[3/5] 生成 commit message...`
输出: 生成的 commit message
### 步骤 4: 提交变更
输出: `[4/5] 提交变更...`
执行: `git add . && git commit -m "<message>"`
输出: 提交结果
### 步骤 5: 推送到远程
输出: `[5/5] 推送到远程...`
执行: `git push` 或 `git push -u origin <branch>`
输出: 推送结果
## Commit Message 规则
**格式**: `<type>: <简洁描述>` (中文描述,不超过 50 字符)
**类型判断**:
- 新增文件较多 → `feat`
- 修改现有文件 → `fix/refactor/feat`
- 文档变更 → `docs`
- 配置变更 → `chore`
- 删除文件 → `refactor`
**Type 类型**: feat, fix, docs, style, refactor, perf, test, chore
## 自动处理
- 新分支自动 `git push -u origin <branch>`
- 需要 pull 时自动 `git pull --rebase` (输出: `↓ 拉取远程更新...`)
## 错误处理(必须输出)
- 没有变更 → 输出 `✗ 工作区干净,无需提交`
- 有冲突 → 输出 `✗ 存在冲突,请手动解决`
- 无远程仓库 → 输出 `✗ 未配置远程仓库`
## 完整输出示例
```
[1/5] 检查仓库状态...
- 2 个文件修改, 1 个文件新增
[2/5] 分析变更内容...
- 3 files changed, 45 insertions(+), 12 deletions(-)
[3/5] 生成 commit message...
- feat: 添加支付接口集成
[4/5] 提交变更...
- 提交成功
[5/5] 推送到远程...
- 已推送到 origin/main
✓ 完成!
```
|
使用方式
在 Claude 中,只需要输入以下任一命令:
push提交推送commit and push提交并推送
Claude 会自动完成全部流程,只在必要时输出关键信息。
上述方式需要交互,还可以直接在命令行工具中执行 claude -p push 来直接提交代码,跟使用普通的 shell 命令类似。