---
name: ads-git-commit
description: Adspecs 命令完成后自动提交更改
agent_created: true
compatibility: 需要 adspecs 项目结构及 docs/ 目录
metadata:
  author: qing wen
  source: git:commands/adspecs.git.commit.md
---

# 自动提交更改

在 adspecs 命令完成后自动暂存并提交所有更改。

## 行为

此命令作为钩子在核心命令执行后（或前）被调用。它：

1. 从钩子上下文中确定事件名称（例如，如果作为 `after_prd` 钩子被调用，则事件为 `after_prd`；如果是 `before_plan`，则事件为 `before_plan`）
2. 检查 `.adspecs/extensions/git/git-config.yml` 中的 `auto_commit` 部分
3. 查找特定事件键以查看自动提交是否启用
4. 如果不存在事件特定键，回退到 `auto_commit.default`
5. 如果配置了，使用每个命令的 `message`，否则使用默认消息
6. 如果已启用且有未提交的更改，运行 `git add .` + `git commit`

## 执行

从触发此命令的钩子确定事件名称，然后运行脚本：

- **Bash**: `.adspecs/extensions/git/scripts/bash/auto-commit.sh <event_name>`
- **PowerShell**: `.adspecs/extensions/git/scripts/powershell/auto-commit.ps1 <event_name>`

将 `<event_name>` 替换为实际的钩子事件（例如 `after_prd`、`before_plan`、`after_implement`）。

## 配置

在 `.adspecs/extensions/git/git-config.yml` 中：

```yaml
auto_commit:
  default: false # 全局开关 — 设为 true 为所有命令启用
  after_new_requirement:
    enabled: true # 按命令覆盖
    message: "[Adspec] 添加需求分析"
  after_prd:
    enabled: true # 按命令覆盖
    message: "[Adspec] 添加产品规格说明书"
  after_plan:
    enabled: true
    message: "[Adspec] 添加后端设计"
  after_tasks:
    enabled: true
    message: "[Adspec] 添加后端实现任务"
  after_front-spec:
    enabled: true
    message: "[Adspec] 添加前端设计"
  after_front-tasks:
    enabled: true
    message: "[Adspec] 添加前端实现任务"
  after_updatestatus:
    enabled: true
    message: "[Adspec] 更新状态"
```

## 优雅降级

- 如果 Git 不可用或当前目录不是仓库：跳过并给出警告
- 如果不存在配置文件：跳过（默认禁用）
- 如果没有要提交的更改：跳过并给出消息
