dev-manager-tauri/docs/ai-context/git-workflow.md
lanrtop bce9a0a37c
All checks were successful
Push & PR Check / check (push) Successful in 1m18s
fix(mcp-inject): liangjing.json 改为合并写入,重注入可回填缺失的 group_id
旧版注入的项目 liangjing.json 缺 group_id,外部 agent 每个会话都要
先调 list_all_projects 反查归属组(多一次探路调用 + 权限弹框)。
group_id 写入已在 2116e54 补上,本次将整文件覆盖改为读取-合并-写回:
只更新 project_id / group_id / mcp_port 三个字段,保留文件已有其他字段。
存量修复路径:对旧项目重新执行 inject_mcp 即可回填。
文档同步说明:移入新产品组时自动刷新;group_id 缺失/过期时重新注入。
2026-07-06 18:43:44 +09:00

105 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Git 工作流 — AI Agent 操作指南
> 把此文件粘贴给任何 AI Agent让它了解本项目的 git 工作方式。由炼境接入包分发。
> `ONBOARDING_MANAGED` 标记块由炼境版本化管理(重跑接入包可原位升级),块外可自由补充项目特有约定。
<!-- ONBOARDING_MANAGED_START version="1.3.0" -->
## 分支策略(复杂度感知)
```
main/master ← 主分支,保持稳定
├── 简单改动 → 直接 push main/master
└── 功能性改动 → feat/<name> 分支 → PR → main/master
```
**简单改动(直接推主分支)**bug fix、chore、docs、style、单文件小改行为对外无变化。
**功能性改动(开 feat/* 分支 + PR**:新功能、重构、涉及多模块的 refactor。由 agent 根据改动文件数和性质自判,无需蓝图标签。
分支命名:`feat/<功能简述>`,如 `feat/login-sms`、`feat/order-pagination`。
## Commit 规范lefthook 强制)
格式:`<type>(<scope>): <描述>`
| type | 用途 |
|------|------|
| `feat` | 新功能 |
| `fix` | Bug 修复 |
| `chore` | 配置、依赖、脚本 |
| `docs` | 文档 |
| `refactor` | 重构(不改功能) |
| `ci` | CI 配置 |
| `perf` | 性能优化 |
| `style` | 代码格式 |
| `test` | 测试 |
`scope` 用「模块/子模块」二级结构(如 `auth/login`、`api/user`、`db/order`),对应项目功能模块。
```bash
git commit -m "feat(auth/login): 新增手机号登录"
git commit -m "fix(api/user): 修正分页 off-by-one"
```
> 炼境会解析这些 commit 的 type/scope 作为飞轮数据:`fix` 计入返工率、`scope` 归到模块。
> **commit 写得越规范,飞轮数据越准。**
## Rules-Applied trailer规则命中回传
若本次任务中触发过 CONVENTIONS 自动推荐规则R01-R11`.blueprint/CONVENTIONS.md` 规则列表),
在 commit message 末尾追加一行 trailer与正文空行分隔
```
feat(auth/login): 新增手机号登录
Rules-Applied: R01,R05
```
- 只记录**真实触发**(主动检查或执行)的规则,未触发则整行省略
- 炼境自动解析此 trailer 做「规则命中 × 返工」交叉统计,是 CONVENTIONS 置信度进化的数据来源
- 凭空罗列会污染数据——宁缺毋滥
## 一个 commit = 一件独立的事
不要 `git add -A` 一次提交所有。按功能分批:
```bash
git add <相关文件>
git commit -m "feat(模块): 一件事"
```
## PR 大小控制
PR 别攒太大(建议每 3~5 个 commit 或几百行内就开一次),否则 CI code review 易超时失效。
「所有检测通过」≠ 代码被审查过——大 PR 即使 CI 全绿review 可能已静默失效。
## PR 创建(炼境托管项目)
本项目由炼境管理MCP 已注入且 `.claude/liangjing.json``project_id``group_id`
`group_id` 用于定位本项目对应的 MCP 服务器 `lian-jing-{group_id}`)。
注意:该文件在注入时生成快照——项目移入新产品组时炼境会自动刷新;若发现 `group_id`
缺失或过期,在炼境重新执行「注入 MCP」或调 MCP 工具 `inject_mcp`)即可回填。
**推送分支后,通过炼境 MCP 创建 PR禁止用 curl + git credential fill 提取 token**
```
1. Read .claude/liangjing.json → 取出 project_id
2. 调用 MCP 工具 create_pull_request
{ "project_id": "<id>", "head": "feat/<name>", "base": "main",
"title": "<Conventional Commits 格式>", "body": "<变更摘要>" }
3. 炼境内部用存储的 Gitea 凭证调 API返回 pr_url
```
若炼境未运行MCP 不可用),降级方案:去 Gitea 网页手动创建 PR。
## 常用命令
```bash
git status --short
git log --oneline -10
git reset --soft HEAD~1 # 撤销最后一次 commit保留改动
```
<!-- ONBOARDING_MANAGED_END -->