在前一篇中,我们深入探讨了 OpenClaw 的提示词设计与工作流搭建。现在,是时候让这个轻量级 AI Agent 与开发者的核心工具——**Git**——深度融合了。

OpenClaw Git 集成 —— 工作树与版本管理、分支管理、Commit 生成

简介

在前一篇中,我们深入探讨了 OpenClaw 的提示词设计与工作流搭建。现在,是时候让这个轻量级 AI Agent 与开发者的核心工具——Git——深度融合了。

Git 是现代软件开发的基石。每一次代码修改、每一次功能迭代、每一次团队协作,都绕不开 Git。而让 AI 编程工具与 Git 集成,不是锦上添花,而是必备能力

但这里有一个关键问题:

如何安全地让 AI 操作你的代码仓库?

OpenClaw 的块级编辑和受限 Shell 执行,恰恰为 Git 集成提供了一个天然的安全边界。它不会像某些大型 AI 工具那样"过度自信"地直接修改文件——它的受限特性反而让 Git 操作更加可控。

本文将从五个维度全面解读 OpenClaw 的 Git 集成能力:

  1. 工作树与版本管理 —— 安全操作代码仓库、状态检查、变更追踪
  2. 分支管理 —— AI 辅助的分支创建、切换、合并、冲突解决
  3. Commit 生成 —— 自动生成规范的提交信息
  4. Diff 分析 —— AI 辅助的代码变更审查
  5. PR 与协作 —— Pull Request 描述生成、Review 辅助

目录

一、工作树与版本管理基础

1.1 OpenClaw 中的 Git 能力

OpenClaw 通过受限 Shell 执行来操作 Git,这意味着它可以运行大多数 Git 命令,但受到白名单保护:

bash
# 检查 OpenClaw 的 Git 命令权限
openclaw "检查当前 git 命令是否在允许列表中"

# 通常以下命令都在白名单中:
# git status, git diff, git log, git add, git commit,
# git branch, git checkout, git merge, git push, git pull

1.2 工作树状态检查

bash
# 让 AI 分析当前仓库状态
openclaw "运行 git status,分析当前工作树状态:
1. 有多少文件被修改?
2. 有多少新文件未跟踪?
3. 有多少文件已暂存?
4. 是否有冲突需要解决?"

# 输出示例:
# 🤖 正在执行: git status --short
#
# 分析结果:
# - 已修改(工作区): 3 个文件
#   - M src/auth.py
#   - M src/routes.py
#   - M tests/test_auth.py
# - 已暂存: 1 个文件
#   - M config.py
# - 未跟踪: 2 个文件
#   - ?? src/new_module.py
#   - ?? docs/api_v2.md
# - 冲突: 0

1.3 变更内容分析

bash
# 让 AI 分析具体的变更内容
openclaw "运行 git diff,分析以下变更:
1. 每个文件改了什么
2. 变更的业务含义
3. 是否有潜在的回归风险
4. 建议的测试重点"

# 限定范围分析
openclaw "运行 git diff HEAD~3..HEAD,分析最近 3 次提交的变更"

1.4 提交历史分析

bash
# 分析最近的提交历史
openclaw "运行 git log --oneline -20,分析:
1. 最近提交的主题分布
2. 是否有异常的提交模式
3. 建议的下一步操作"

# 分析特定作者的提交
openclaw "运行 git log --author='developer' --oneline -10,
分析这个开发者最近的提交模式和关注的领域"

1.5 仓库健康检查

bash
# 让 AI 进行仓库健康检查
openclaw "对当前 Git 仓库进行健康检查:
1. git fsck 检查结果
2. 大文件检查
3. 是否有未解决的 merge
4. 分支清理建议
5. .gitignore 完整性检查"

二、安全的 AI Git 操作

2.1 安全操作原则

text
┌──────────────────────────────────────────────────────────┐
│              AI Git 操作安全原则                          │
│                                                          │
│  1. 只读优先:先分析,再操作                              │
│     git status → git diff → 人工确认 → git add           │
│                                                          │
│  2. 小步提交:每次只让 AI 处理少量变更                     │
│     避免一次性修改几十个文件                              │
│                                                          │
│  3. 分支隔离:AI 的操作都在独立分支上进行                   │
│     永远不要直接在 main/master 分支上操作                  │
│                                                          │
│  4. 可回退:每次 AI 操作前确保可以回退                      │
│     git stash → AI 操作 → 确认/回退                        │
│                                                          │
│  5. 验证优先:AI 操作后立即验证                            │
│     git diff 检查 → 运行测试 → 确认通过                    │
└──────────────────────────────────────────────────────────┘

2.2 安全操作脚本

bash
#!/bin/bash
# ai-git-safe.sh:安全的 AI Git 操作封装

ai_git_operation() {
  local operation=$1
  shift

  # 步骤 1:保存当前状态
  echo "📦 保存当前工作树状态..."
  STASH_NAME="pre-ai-$(date +%Y%m%d_%H%M%S)"
  git stash push -m "$STASH_NAME"

  # 步骤 2:创建 AI 操作分支
  echo "🌿 创建 AI 操作分支..."
  AI_BRANCH="ai/$operation-$(date +%Y%m%d_%H%M%S)"
  git checkout -b "$AI_BRANCH"

  # 步骤 3:恢复工作树
  git stash pop

  # 步骤 4:执行 AI 操作
  echo "🤖 执行 AI 操作: $operation"
  openclaw "$@"

  # 步骤 5:检查变更
  echo "🔍 检查变更..."
  git diff --stat

  # 步骤 6:等待人工确认
  read -p "✅ 确认这些变更?(y/n): " confirm

  if [ "$confirm" = "y" ]; then
    echo "✅ 变更已确认,提交到 $AI_BRANCH"
    openclaw "为以下变更生成 Conventional Commits 格式的提交信息:
$(git diff)" | head -1 > /tmp/commit_msg_$$
    git add -A
    git commit -F /tmp/commit_msg_$$
    rm /tmp/commit_msg_$$
  else
    echo "❌ 放弃变更"
    git checkout -- .
    git checkout -
    git branch -D "$AI_BRANCH"
  fi

  # 步骤 7:恢复原始状态
  git stash pop --index || true
}

# 使用示例
ai_git_operation "refactor-auth" "重构 src/auth.py,使用策略模式"

2.3 OpenClaw 配置中的 Git 白名单

yaml
# ~/.config/openclaw/config.yaml

shell:
  mode: restricted
  allowed_commands:
    # 基础 Git 命令
    - git status
    - git diff
    - git log
    - git show
    - git branch
    - git checkout
    - git add
    - git commit
    - git push
    - git pull
    - git fetch
    - git merge
    - git rebase
    - git stash
    - git tag
    - git cherry-pick
    # 非 Git 命令
    - ls
    - cat
    - grep
    - find
    - python3
    - make

  blocked_commands:
    # 危险操作
    - git push --force
    - git reset --hard
    - git clean -fd
    - rm -rf
    - sudo

三、分支管理:创建、切换、合并

3.1 AI 辅助分支命名

bash
# 让 AI 根据任务描述生成规范的分支名
openclaw "根据以下任务描述,生成符合 Git 分支命名规范的分支名:
任务:修复用户登录时的 SQL 注入漏洞

输出格式:
- type/scope-description
- 例如:fix/auth/sql-injection-login"

# 常见分支命名规范
# feature/user-auth      - 新功能
# fix/auth/login-bug     - Bug 修复
# refactor/api/cleanup   - 重构
# docs/api/v2            - 文档
# chore/deps/update      - 维护任务
# perf/query/optimization - 性能优化

3.2 自动分支创建

bash
#!/bin/bash
# ai-branch.sh:AI 辅助分支创建

create_ai_branch() {
  local task_description=$1

  # AI 生成分支名
  branch_name=$(openclaw --quiet "根据以下描述生成分支名(格式:type/scope-description):
$task_description
只输出分支名,不要其他内容")

  echo "🌿 创建分支: $branch_name"

  # 创建并切换分支
  git checkout -b "$branch_name"

  # 创建分支说明文件
  echo "# $branch_name
# 任务描述: $task_description
# 创建时间: $(date)
# 创建者: $(git config user.name)" > .branch-info.md

  git add .branch-info.md
  git commit -m "chore: 创建分支 $branch_name"

  echo "✅ 分支 $branch_name 已创建"
}

# 使用
create_ai_branch "实现用户密码重置功能,包括邮件验证和 token 管理"

3.3 分支合并辅助

bash
# AI 辅助合并分析
openclaw "分析以下分支的变更,判断是否可以安全合并:
- 源分支: feature/user-auth
- 目标分支: main

分析维度:
1. 变更文件数量
2. 变更行数
3. 冲突风险评估
4. 测试覆盖情况
5. 是否有破坏性变更

运行 git log main..feature/user-auth --oneline 获取提交列表"

# AI 辅助合并策略选择
openclaw "根据以下情况,推荐合适的 Git 合并策略:
- 分支已提交 15 次
- 涉及 8 个文件修改
- 有 2 个冲突文件
- 团队使用 squash merge

请说明:
1. 推荐的合并策略
2. 具体操作步骤
3. 冲突解决建议"

3.4 分支清理

bash
# AI 辅助分支清理分析
openclaw "分析以下分支,指出可以安全删除的分支:
$(git branch -r | grep -v main | grep -v develop)

判断标准:
1. 已合并到 main 的分支
2. 超过 30 天没有活动的分支
3. 没有关联的 PR 的分支

输出格式:
- 分支名 (原因)
  最后提交: ...
  合并状态: ...
"

3.5 分支工作流模板

bash
#!/bin/bash
# feature-workflow.sh:完整的 AI 辅助功能开发工作流

# 步骤 1:创建功能分支
echo "=== 创建功能分支 ==="
BRANCH=$(openclaw --quiet "生成 feature 分支名: 实现用户头像上传功能")
git checkout -b "$BRANCH"

# 步骤 2:AI 辅助实现
echo "=== AI 辅助开发 ==="
openclaw "实现用户头像上传功能:
1. 创建上传端点 POST /api/users/{id}/avatar
2. 支持 jpg/png/webp 格式
3. 文件大小限制 5MB
4. 使用 S3 存储
5. 更新用户头像 URL"

# 步骤 3:生成测试
echo "=== 生成测试 ==="
openclaw -f routes/users.py "为头像上传功能生成完整的测试用例" > tests/test_avatar.py

# 步骤 4:运行测试
echo "=== 运行测试 ==="
python -m pytest tests/test_avatar.py -v

# 步骤 5:生成提交
echo "=== 生成提交 ==="
openclaw "为以下变更生成提交信息:
$(git diff HEAD)" > /tmp/commit_msg
git add -A
git commit -F /tmp/commit_msg

# 步骤 6:推送到远程
echo "=== 推送分支 ==="
git push -u origin "$BRANCH"

echo "✅ 功能开发完成!分支已推送。"

四、冲突解决:AI 辅助策略

4.1 冲突检测与分析

bash
# 当合并冲突发生时,让 AI 帮助分析
openclaw "分析以下 Git 合并冲突:
$(git diff --name-only --diff-filter=U)

对于每个冲突文件:
1. 冲突的行号范围
2. 冲突的原因(双方改了什么)
3. 建议的解决策略"

4.2 AI 辅助冲突解决

bash
#!/bin/bash
# ai-resolve-conflicts.sh:AI 辅助解决合并冲突

resolve_conflicts() {
  local conflict_files=$(git diff --name-only --diff-filter=U)

  if [ -z "$conflict_files" ]; then
    echo "✅ 没有冲突需要解决"
    return 0
  fi

  echo "🔍 发现冲突文件:"
  echo "$conflict_files"
  echo ""

  for file in $conflict_files; do
    echo "--- 处理: $file ---"

    # 让 AI 分析冲突
    echo "🤖 分析冲突..."
    openclaw "分析以下 Git 冲突标记并给出解决方案:
$(cat "$file")

冲突标记说明:
<<<<<<< HEAD:当前分支的代码
=======
>>>>>>> branch-name:要合并分支的代码

请输出:
1. 冲突的原因分析
2. 推荐的解决方案(保留哪部分或如何合并)
3. 解决后的完整文件内容" > "/tmp/resolve_${file//\//_}"

    # 显示分析结果
    cat "/tmp/resolve_${file//\//_}"

    # 等待确认
    read -p "应用此解决方案?(y/n/e 手动编辑): " choice

    case $choice in
      y)
        # 提取解决后的内容(需要从 AI 输出中提取代码部分)
        # 这里简化处理,实际应使用更精确的提取逻辑
        echo "✅ 应用到 $file"
        git add "$file"
        ;;
      e)
        echo "请手动编辑 $file"
        ${EDITOR:-vim} "$file"
        git add "$file"
        ;;
      *)
        echo "跳过 $file"
        ;;
    esac
  done
}

# 使用
resolve_conflicts

4.3 冲突解决模板

bash
# 结构化冲突解决指令
openclaw "你是 Git 合并冲突解决专家。请解决以下冲突:

【文件】src/auth.py

【当前分支 (main) 的代码】
$(git show main:src/auth.py | sed -n '45,60p')

【合并分支 (feature) 的代码】
$(git show feature:src/auth.py | sed -n '45,60p')

【冲突位置】
$(sed -n '45,60p' src/auth.py)

【解决要求】
1. 保留 main 分支的安全修复
2. 保留 feature 分支的新功能
3. 两者合并,不丢失任何一方的改动
4. 输出完整的解决后代码"

4.4 Rebase 冲突处理

bash
# Rebase 时的冲突处理策略
openclaw "在执行 git rebase main 时遇到冲突,分析:
1. 冲突产生的原因(是功能重叠还是格式差异)
2. 应该用 git rebase --continue 还是 git rebase --skip
3. 如果是格式差异,建议的配置调整

运行 git diff 查看冲突详情"

五、Commit 消息生成

5.1 Conventional Commits 规范

text
┌──────────────────────────────────────────────────────────┐
│              Conventional Commits 格式                     │
│                                                          │
│  <type>(<scope>): <description>                          │
│                                                          │
│  [optional body]                                         │
│                                                          │
│  [optional footer(s)]                                    │
│                                                          │
│  常用 type:                                              │
│  feat     - 新功能                                       │
│  fix      - Bug 修复                                     │
│  docs     - 文档变更                                     │
│  style    - 代码格式(不影响功能)                         │
│  refactor - 重构(不是新功能也不是修复)                    │
│  perf     - 性能优化                                     │
│  test     - 测试相关                                     │
│  chore    - 构建/工具变更                                │
│  ci       - CI/CD 变更                                   │
└──────────────────────────────────────────────────────────┘

5.2 自动 Commit 生成

bash
# 让 AI 根据变更生成 Conventional Commits 格式的提交信息
openclaw "根据以下 Git diff,生成 Conventional Commits 格式的提交信息:

$(git diff --cached)

要求:
1. 第一行:<type>(<scope>): <description>
2. description 不超过 72 字符
3. body 部分说明变更的原因和影响
4. footer 包含 breaking changes 或 issue 引用(如果有)
5. 只输出提交信息,不要其他内容"

# 直接用于 git commit
git add -A
openclaw "根据以下变更生成 Conventional Commits 提交信息:
$(git diff --cached)
只输出提交信息内容" | git commit -F -

5.3 批量提交生成

bash
#!/bin/bash
# ai-commit-all.sh:为每个暂存的文件生成独立提交

# 按文件分组暂存
git diff --cached --name-only | while read -r file; do
  # 重置所有
  git reset HEAD

  # 暂存单个文件
  git add "$file"

  # 生成提交信息
  commit_msg=$(openclaw --quiet "根据以下变更生成一行 Conventional Commits 提交信息:
$(git diff --cached $file)
格式:type(scope): description
只输出提交信息")

  # 提交
  git commit -m "$commit_msg"

  echo "✅ 已提交: $file"
  echo "   $commit_msg"
done

5.4 交互式 Commit

bash
#!/bin/bash
# ai-commit-interactive.sh:交互式 AI 辅助提交

echo "🤖 AI 辅助 Git 提交"
echo ""

# 显示状态
git status --short
echo ""

# 选择文件
echo "选择要暂存的文件(逗号分隔,或输入 all):"
read -r selection

if [ "$selection" = "all" ]; then
  git add -A
else
  for file in $(echo "$selection" | tr ',' ' '); do
    git add "$file"
  done
fi

# 显示 diff
echo ""
echo "=== 变更内容 ==="
git diff --cached --stat
echo ""

# AI 生成提交信息
echo "🤖 正在生成提交信息..."
commit_msg=$(openclaw --quiet "根据以下变更生成 Conventional Commits 提交信息:
$(git diff --cached)

要求:
- 类型 + 作用域 + 描述(一行)
- 详细说明(可选,多行)
- 包含 BREAKING CHANGE(如果有)

输出格式:
type(scope): description

详细变更说明...

BREAKING CHANGE: ..."

echo ""
echo "=== 生成的提交信息 ==="
echo "$commit_msg"
echo ""

# 确认
read -p "使用此提交信息?(y/n/edit): " choice
case $choice in
  y)
    git commit -m "$commit_msg"
    echo "✅ 提交成功"
    ;;
  n)
    echo "取消提交"
    git reset HEAD
    ;;
  edit)
    ${EDITOR:-vim} -c "startinsert" /tmp/commit_msg <<< "$commit_msg"
    git commit -F /tmp/commit_msg
    rm /tmp/
    ;;
esac

5.5 提交信息质量检查

bash
# AI 审查提交信息质量
openclaw "审查以下 Git 提交信息,按照 Conventional Commits 规范检查:

$(git log --format='%B' -1)

检查项:
1. 格式是否正确(type(scope): description)
2. description 是否超过 72 字符
3. type 是否使用了标准类型
4. body 是否清晰说明了变更原因
5. 是否有需要添加的 footer(如 BREAKING CHANGE、Closes #xxx)

输出格式:
- [✅/❌] 检查项:说明"

六、Diff 分析与会话管理

6.1 变更内容分析

bash
# 让 AI 详细分析变更
openclaw "分析以下 Git diff 中的变更:

$(git diff HEAD~5..HEAD)

分析维度:
1. 变更摘要(3-5 句话)
2. 每个文件的变更目的
3. 潜在的风险点
4. 需要关注的测试用例
5. 是否有文档需要同步更新"

6.2 代码变更审查

bash
# AI 代码变更审查
openclaw "你是一位代码审查专家。请审查以下代码变更:

$(git diff origin/main...HEAD)

审查维度:
1. 【正确性】逻辑是否正确,有无边界条件遗漏
2. 【安全性】有无安全隐患(SQL 注入、XSS 等)
3. 【性能】有无性能退化
4. 【可读性】代码是否清晰易懂
5. 【测试】变更是否有对应的测试

格式:
[维度] [文件:行号] 问题/建议
严重级别:CRITICAL / HIGH / MEDIUM / LOW"

6.3 变更影响分析

bash
# 分析变更的影响范围
openclaw "分析以下变更的影响范围:

$(git diff HEAD~1)

请回答:
1. 哪些模块/功能会受到影响?
2. 是否有下游依赖需要同步修改?
3. 是否需要更新文档?
4. 是否需要通知其他团队成员?
5. 建议的测试策略"

6.4 会话状态管理

bash
# Git 操作中的会话管理
openclaw

# 在交互模式中管理 Git 会话
> 检查当前仓库状态

  🤖 正在执行: git status --short

  结果:
  M src/auth.py
  A tests/test_auth.py
  ?? docs/

> 为这些变更生成提交信息

  🤖 基于变更内容,建议以下提交信息:

  feat(auth): 实现基于 JWT 的用户认证

  - 添加 JWT token 生成和验证
  - 集成 bcrypt 密码哈希
  - 添加完整的测试用例

  确认提交?(y/n)

> y

  🤖 正在执行: git add -A
  🤖 正在执行: git commit -m "feat(auth): 实现基于 JWT 的用户认证"

  ✅ 提交成功 [main abc1234]

七、PR 描述与协作工作流

7.1 PR 描述生成

bash
# 自动生成 Pull Request 描述
openclaw "为以下代码变更生成 Pull Request 描述:

**变更摘要**
$(git log main...feature-branch --oneline)

**详细变更**
$(git diff main...feature-branch --stat)

**格式要求**
## 📝 变更概述

简要描述本次变更的目的和内容

## 🔧 变更详情

- **新增**:...
- **修改**:...
- **删除**:...

## 🧪 测试

- [ ] 单元测试通过
- [ ] 集成测试通过
- [ ] 手动测试验证

## 📋 检查清单

- [ ] 代码遵循项目规范
- [ ] 已添加/更新测试
- [ ] 已更新文档
- [ ] 无安全漏洞

## 🔗 相关问题

Closes #xxx"

7.2 完整 PR 工作流

bash
#!/bin/bash
# ai-pr-workflow.sh:AI 辅助的完整 PR 工作流

# 步骤 1:确保在正确的分支上
current_branch=$(git branch --show-current)
echo "📍 当前分支: $current_branch"

# 步骤 2:获取变更统计
echo "📊 变更统计:"
git diff main...HEAD --stat

# 步骤 3:AI 生成 PR 描述
echo "🤖 生成 PR 描述..."
pr_description=$(openclaw --quiet "为以下分支变更生成 Markdown 格式的 PR 描述:

分支: $current_branch
目标: main

变更摘要:
$(git log main...HEAD --oneline)

变更统计:
$(git diff main...HEAD --stat)

格式包含:概述、变更详情、测试清单、检查清单、相关问题")

echo "$pr_description" > /tmp/pr_description.md

# 步骤 4:使用 GitHub CLI 创建 PR(如果可用)
if command -v gh &> /dev/null; then
  gh pr create \
    --base main \
    --head "$current_branch" \
    --title "$(head -1 /tmp/pr_description.md | sed 's/## //')" \
    --body-file /tmp/pr_description.md
  echo "✅ PR 已创建"
else
  echo "📋 PR 描述已保存到 /tmp/pr_description.md"
  echo "请手动创建 PR"
fi

rm /tmp/pr_description.md

7.3 Review 辅助

bash
# AI 辅助代码 Review
openclaw "你是一位资深代码审查员。请审查以下 Pull Request:

**PR 标题**
$(gh pr view --json title -q .title 2>/dev/null || echo "未知")

**变更文件**
$(git diff main...HEAD --name-only)

**变更内容**
$(git diff main...HEAD)

请提供:
1. 总体评价(1-5 星)
2. 必须修改的问题(blocking)
3. 建议修改的问题(non-blocking)
4. 亮点和好的实践
5. 最终建议:Approve / Request Changes / Comment"

八、Git Hooks 深度集成

8.1 pre-commit Hook

bash
#!/bin/bash
# .git/hooks/pre-commit
# 提交前 AI 代码审查

echo "🔍 AI 代码审查中..."

# 获取暂存的变更
changes=$(git diff --cached)

if [ -z "$changes" ]; then
  exit 0
fi

# AI 审查
review_result=$(openclaw --quiet "快速审查以下代码变更,只报告严重问题(安全漏洞、语法错误、逻辑错误):

$changes

如果有严重问题,输出:
BLOCKING: 问题描述

如果没有严重问题,输出:
OK")

# 检查结果
if echo "$review_result" | grep -q "^BLOCKING:"; then
  echo "❌ AI 发现阻塞性问题:"
  echo "$review_result" | grep "^BLOCKING:"
  echo ""
  echo "请修复后重新提交。如需跳过,使用: git commit --no-verify"
  exit 1
fi

echo "✅ AI 审查通过"

8.2 commit-msg Hook

bash
#!/bin/bash
# .git/hooks/commit-msg
# 提交信息格式检查

commit_msg_file=$1
commit_msg=$(cat "$commit_msg_file")

# 检查 Conventional Commits 格式
if ! echo "$commit_msg" | grep -qE "^(feat|fix|docs|style|refactor|perf|test|chore|ci|build)(\(.+\))?: .+"; then
  echo "⚠️ 提交信息不符合 Conventional Commits 规范"
  echo ""

  # AI 建议修复
  suggestion=$(openclaw --quiet "将以下提交信息改为 Conventional Commits 格式:
$commit_msg
只输出修改后的提交信息")

  echo "💡 AI 建议:"
  echo "$suggestion"
  echo ""

  read -p "使用 AI 建议?(y/n): " choice
  if [ "$choice" = "y" ]; then
    echo "$suggestion" > "$commit_msg_file"
    echo "✅ 已更新提交信息"
  else
    echo "请手动修改提交信息"
    exit 1
  fi
fi

8.3 post-merge Hook

bash
#!/bin/bash
# .git/hooks/post-merge
# 合并后自动生成变更摘要

echo "📝 生成合并变更摘要..."

# 获取合并引入的变更
changes=$(git diff ORIG_HEAD..HEAD)

# AI 生成摘要
summary=$(openclaw --quiet "为以下合并变更生成简短摘要(3-5 句话):
$(git log ORIG_HEAD..HEAD --oneline)

合并涉及的主要变更:
$(git diff ORIG_HEAD..HEAD --stat)")

echo ""
echo "=== 合并变更摘要 ==="
echo "$summary"
echo ""

# 保存到文件
echo "$summary" > .merge-summary-$(date +%Y%m%d).md

九、高级场景与最佳实践

9.1 大型仓库的 AI 操作

bash
# 对于大型仓库,避免一次性处理所有变更
openclaw "只分析以下目录的变更:
$(git diff HEAD -- src/auth/ src/api/)"

# 使用路径过滤
openclaw -f "src/auth/*.py" "分析 auth 模块最近的变更"

9.2 多仓库管理

bash
#!/bin/bash
# ai-multi-repo.sh:多仓库 AI 操作

repos=("project-a" "project-b" "project-c")

for repo in "${repos[@]}"; do
  cd "$repo"
  echo "=== 处理 $repo ==="

  # 检查状态
  status=$(git status --short)
  if [ -n "$status" ]; then
    openclaw --quiet "分析 $repo 的变更并生成提交信息:
$(git diff --cached)" > /tmp/commit_${repo}
  fi

  cd ..
done

9.3 Git Bisect 辅助

bash
# AI 辅助二分查找
openclaw "以下 bug 是在哪个引入的?

Bug 描述:用户登录后偶尔会出现 500 错误

可疑提交范围:
$(git log --oneline v2.0..v2.1)

请分析每个提交的变更,指出最可能引入此 bug 的提交,并说明原因"

9.4 发布准备检查

bash
# 发布前的 AI 辅助检查
openclaw "执行发布前检查:

1. CHANGELOG 更新检查
$(git diff HEAD -- CHANGELOG.md)

2. 版本号一致性检查
$(grep -r "version" setup.py package.json 2>/dev/null)

3. 依赖更新检查
$(git diff HEAD -- requirements.txt)

4. 文档完整性检查
$(find docs/ -name "*.md" -newer CHANGELOG.md)

请输出:
- 每项检查的结果
- 发现的问题
- 修复建议"

9.5 Git 操作最佳实践总结

text
┌──────────────────────────────────────────────────────────┐
│              Git + AI 最佳实践清单                         │
│                                                          │
│  ✅ 始终在独立分支上操作                                   │
│  ✅ 小步提交,频繁提交                                     │
│  ✅ AI 生成提交信息后人工检查                               │
│  ✅ 合并前运行完整测试                                      │
│  ✅ 保留 git stash 作为安全网                              │
│  ✅ 使用 Conventional Commits 规范                         │
│  ✅ 定期清理已合并的分支                                    │
│  ✅ AI 审查后人工二次确认                                   │
│                                                          │
│  ❌ 不要直接在 main 分支上操作                              │
│  ❌ 不要跳过测试直接提交                                    │
│  ❌ 不要使用 git push --force(除非明确知道后果)             │
│  ❌ 不要让 AI 自动合并冲突(必须人工确认)                    │
│  ❌ 不要忽略 AI 报告的 BLOCKING 问题                        │
└──────────────────────────────────────────────────────────┘

总结

本篇我们全面探索了 OpenClaw 与 Git 的深度集成:

  • 工作树管理 —— 状态检查、变更分析、仓库健康检查
  • 安全操作 —— 只读优先、小步提交、分支隔离、可回退
  • 分支管理 —— AI 辅助命名、自动创建、合并分析、清理
  • 冲突解决 —— 冲突分析、AI 辅助解决、Rebase 策略
  • Commit 生成 —— Conventional Commits 规范、批量生成、质量检查
  • Diff 分析 —— 变更审查、影响分析、代码审查
  • PR 协作 —— PR 描述生成、Review 辅助、完整 PR 工作流
  • Hooks 集成 —— pre-commit、commit-msg、post-merge 自动化
  • 高级场景 —— 大仓库、多仓库、Bisect、发布检查

关键要点

  1. AI 操作 Git 时,安全永远是第一位的
  2. Conventional Commits 是标准化的最佳选择
  3. 分支隔离 + 小步提交 = 安全的 AI 协作模式
  4. Git Hooks 是实现自动化的最佳切入点
  5. AI 审查不能替代人工确认,但能大幅提升效率

下篇预告

在下一篇 《MCP 与扩展》 中,我们将探索 OpenClaw 的扩展能力边界:

  • 🔌 MCP Server 配置 —— Model Context Protocol 服务器设置与管理
  • 🧩 工具扩展 —— 自定义工具开发、第三方服务集成
  • 📊 结果处理 —— 输出管道、数据转换、后续处理
  • 🌐 外部 API 集成 —— 数据库、搜索、监控等服务的连接
  • 🔄 扩展生命周期 —— 安装、配置、更新、调试

如果你希望让 OpenClaw 的能力超越基础的代码生成和文件操作,连接到更广阔的工具生态,下一篇将是你的扩展指南。