使用AI工具来完成自动提交代码

背景

在日常开发工作中,git commit 和 push 是每个开发者都需要频繁执行的操作。传统的流程通常是:

  1. 查看代码变更:git statusgit diff
  2. 暂存变更:git add .
  3. 编写 commit message:需要思考如何简洁准确地描述本次变更
  4. 提交代码:git commit -m "message"
  5. 推送到远程: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 中,只需要:

  1. 完成代码修改
  2. 在 Agent 对话框中输入 push 命令
  3. 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 命令类似。