Git 集成

wescode 深度整合 Git 版本控制,结合 AI Agent 引擎和 CKG(代码知识图谱)提供智能化的 Git 工作流辅助,包括 AI 生成 Commit 消息、分支管理、冲突解决、PR 辅助和代码历史分析。

AI Commit

智能 Commit 消息生成

wescode 分析 staged 变更,自动生成符合 Conventional Commits 规范的提交消息:

在 Chat 面板中:
> 帮我生成 commit message

或使用快捷键:
Ctrl+Shift+G → AI Commit

AI 会分析以下信息来生成消息:

Commit 消息格式

feat(auth): 添加 JWT token 刷新机制

- 新增 RefreshToken 中间件
- 支持 token 过期前自动续期
- 刷新失败时返回 401 引导重新登录

Refs: #234

批量 Commit

对于大量变更,AI 可以建议拆分为多个语义清晰的提交:

> 这次改动涉及三个功能,帮我拆分 commit

AI 建议:
1. refactor(db): 抽取数据库连接池配置
2. feat(cache): 添加 Redis 缓存层
3. test(cache): 补充缓存命中率测试

配置选项

在 config.yaml 中自定义 Commit 风格:

git:
  commit:
    language: zh-CN        # 提交消息语言
    convention: conventional  # conventional | angular | custom
    max_subject_length: 72
    include_body: true     # 是否生成详细描述
    include_refs: true     # 是否包含 issue 引用

分支管理

AI 辅助分支操作

> 基于当前 main 创建功能分支,我要实现用户权限模块

AI 执行:
git checkout main
git pull origin main
git checkout -b feat/user-permission

分支命名建议

AI 根据任务描述自动生成规范的分支名:

任务类型建议分支名
新功能feat/user-permission
修复fix/login-timeout
重构refactor/db-connection-pool
文档docs/api-reference

分支状态分析

> 分析一下我当前分支和 main 的差异

AI 报告:
- 领先 main 12 个提交
- 落后 main 3 个提交(可能存在冲突)
- 涉及 8 个文件,主要在 internal/auth/ 目录
- 建议先 rebase main 再继续开发

Stash 管理

> 我需要临时切到 hotfix 分支,先保存当前工作

AI 执行:
git stash push -m "WIP: 用户权限模块 - 角色分配功能"

> 切回来了,恢复之前的工作
git stash pop

冲突解决

AI 辅助合并冲突

当 git merge 或 git rebase 产生冲突时,wescode 提供智能辅助:

> 帮我解决当前的合并冲突

AI 分析:
发现 3 个文件存在冲突:
1. internal/auth/middleware.go — 函数签名变更冲突
2. internal/config/config.go — 新增配置项冲突
3. go.mod — 依赖版本冲突

正在逐个分析...

冲突理解

AI 结合 CKG 理解冲突双方的意图:

文件: internal/auth/middleware.go

<<<<<<< HEAD (你的修改)
func AuthMiddleware(cfg *Config) gin.HandlerFunc {
=======
func AuthMiddleware(cfg *Config, logger *slog.Logger) gin.HandlerFunc {
>>>>>>> main (目标分支)

AI 分析:
- HEAD:你重构了 Config 结构,将 logger 内嵌到 Config 中
- main:同事给中间件加了显式 logger 参数
- 建议:采用你的方案(Config 内嵌 logger),因为更符合项目约定
  同时保留 main 中新增的日志点

冲突预防

AI 可以提前预警潜在冲突:

> 我的分支和 main 有潜在冲突吗?

AI 检查:
⚠️  internal/auth/handler.go
   你修改了 LoginHandler 的入参
   main 分支上同事也修改了同一函数
   建议尽早合并以减少冲突范围

批量冲突处理

当冲突文件较多时,AI 按优先级排序并逐一处理:

> 一次性解决所有冲突

AI 策略:
1. 先解决 go.mod(基础依赖,影响编译)
2. 再解决 config.go(配置层,被其他文件依赖)
3. 最后解决 middleware.go(业务逻辑)
每步解决后自动执行 go build 验证

PR 辅助

自动生成 PR 描述

当你准备提交 Pull Request 时,AI 可以自动生成完整的 PR 描述:

> 帮我生成这个分支的 PR 描述

AI 生成:
## 概述
实现用户权限管理模块,支持基于角色的访问控制(RBAC)。

## 变更内容
- 新增 `internal/auth/rbac.go`:角色定义与权限映射
- 新增 `internal/auth/middleware.go`:权限校验中间件
- 修改 `internal/api/router.go`:为受保护路由添加权限中间件
- 新增 `internal/auth/rbac_test.go`:RBAC 单元测试(覆盖率 92%)

## 影响分析(CKG)
- 影响 12 个 API 端点的访问控制
- 新增 2 个数据库表(roles, user_roles)
- 不影响现有认证流程(向后兼容)

## 测试
- [x] 单元测试通过
- [x] 集成测试通过
- [x] 手动验证管理员/普通用户权限差异

## 关联 Issue
Closes #234

PR 审查建议

AI 在提交 PR 前进行预审查,提前发现问题:

> 审查一下我这个 PR,提交前检查

AI 预审查报告:
✅ 代码风格一致
✅ 测试覆盖率 92%(高于项目要求的 80%)
⚠️  建议:rbac.go 第 45 行的权限检查可以使用 map 替代 switch
⚠️  建议:middleware.go 缺少 rate limit 相关的注释
❌ 问题:router.go 中 /admin/users 路由缺少权限中间件

PR 模板适配

AI 能识别项目的 PR 模板并自动填充:

> 按照项目的 PR 模板格式生成

AI 会读取 .github/PULL_REQUEST_TEMPLATE.md
自动填充各个必填字段

变更影响摘要

结合 CKG 分析,AI 为 Reviewer 提供变更影响概览:

本次 PR 的调用图影响:

router.go → middleware.go → rbac.go → db/role_repo.go
                                   ↘ cache/role_cache.go

直接影响:5 个文件
间接影响:12 个 API 端点
风险评估:中(涉及权限控制逻辑)
建议 Reviewer 重点关注:rbac.go 中的权限继承逻辑

历史分析

Git 考古

利用 AI 理解代码的演变历史:

> 这个函数为什么是现在这个样子?追溯它的历史

AI 分析 ProcessOrder() 的演变:
1. 2024-03 初始版本:简单的同步处理
2. 2024-06 重构:加入异步队列(PR #89)
3. 2024-09 修复:处理超时取消(Issue #156)
4. 2025-01 优化:批量处理模式(PR #203)

当前形态的关键决策:
- 异步队列是为了支持高并发(当时日订单量突破 10 万)
- 超时取消是因为第三方支付回调偶尔 hang 住

Blame 分析

增强的 git blame 功能,不仅显示谁改了什么,还解释为什么:

> 这行代码为什么设置超时为 30 秒?

AI 通过 blame + commit message + 关联 issue 分析:
该值在 PR #156 中从 60s 改为 30s
原因:Issue #155 报告支付回调超过 30s 的概率为 0.01%
决策:将超时设为 30s 以平衡用户体验和系统资源
修改者:张三(2024-09-15)

变更趋势分析

> 分析最近一个月哪些模块改动最频繁

AI 报告:
1. internal/order/  — 变更 47 次(热点模块)
2. internal/payment/ — 变更 31 次
3. internal/auth/    — 变更 12 次

建议:
- order 模块变更过于频繁,可能需要拆分
- payment 模块的变更集中在 callback 处理,建议重构

Cherry Pick 辅助

> 把 fix/timeout 分支上修复超时的那个提交 cherry-pick 到 release

AI 定位并执行:
找到目标提交:a1b2c3d "fix: 支付回调超时从 60s 调整为 30s"
git cherry-pick a1b2c3d
✅ Cherry-pick 成功,无冲突

工作流集成

常用 Git 工作流

wescode 支持多种 Git 工作流的 AI 辅助:

Git Flow:

> 开始一个新功能开发(Git Flow)

AI 执行:
git flow feature start user-permission
# 开发完成后
git flow feature finish user-permission

GitHub Flow:

> 从 main 开始,走 GitHub Flow

AI 执行:
git checkout -b feat/user-permission
# ... 开发 & 提交 ...
# 准备 PR 时自动生成描述

Trunk-Based:

> 使用 trunk-based 模式提交

AI 建议:
- 变更较小,建议直接提交到 main
- 变更较大,建议创建短生命周期分支(< 1 天)

最佳实践

Commit 规范

分支卫生

PR 规范

注意事项