按意图解冲突、把 merge / rebase 干到完成的口袋版。完整教学见 Lesson 0018; 原文见 SKILL.md(全部规范仅 14 行)、 docs 叙事版。
git 因冲突停在半途时进场:逐个 hunk(冲突块)按意图而非文本解—— 两侧追回到 primary source(commit message / PR / 原始 Issue),能兼顾就兼顾, 互斥就选符合合并既定目标的一边并说出取舍;跑完项目检查,把这次操作解到完成、提交落好。
/resolving-merge-conflicts,或模型按 description 自动加载diagnosing-bugs(docs 点名的天然邻居)--abort 撤销重来 → 这正是被明令禁止的出路--abort——永远解到底,永不中止| 步 | 做什么 | 要点 |
|---|---|---|
| 1 | 看清现场 | merge 还是 rebase?卡在哪些文件、哪几个 hunk?只看不动手 |
| 2 | 找一手来源 | 每个冲突两侧追回 commit message、PR、原始 Issue;能一句话说出「这边想要什么」 |
| 3 | 逐个 hunk 解 | 先问能否兼顾;互斥则对准入合并目标选边、说出 trade-off;不发明、不中止 |
| 4 | 跑项目检查 | 典型顺序 typecheck → tests → format;合并碰坏的修到绿 |
| 5 | 收尾 | stage 全部并 commit;rebase 则 continue 到所有 commit 过完,中途再撞冲突就回第 1 步 |
漏斗纪律:第 1–2 步只读不写,第 3 步才动文件,第 4–5 步验证并封存。 走样先问「是不是跳步了」——最常见是跳过第 2 步、省略第 4 步。
| 对象 | 怎么动 |
|---|---|
| 冲突文件内容 | 改写:去标记,写入解好的内容(第 3 步) |
| 冲突外的源码 | 可能改写:检查跑红时修到绿(第 4 步) |
| git 暂存区 / 历史 | stage + 落 commit;rebase 整串过完(第 5 步)——它的交付物 |
| commit message / PR / Issue tracker | 只读,作为一手来源 |
| CONTEXT.md / ADR / docs / 报告 | 绝不碰,无文档类交付物 |
diagnosing-bugs(冲突现场已不存在,别再回本 skill)code-review 对固定起点过一遍(可选编排,非内置步骤)| 症状 | 改 |
|---|---|
| 闭眼选边、语义解坏 | SKILL.md 第 2、3 步(先读一手来源、按意图兼顾) |
| 解出两边都没有的新逻辑 | SKILL.md 第 3 步 “Do not invent new behaviour.” |
| 冲突一多就 abort | SKILL.md 第 3 步末 “Always resolve; never --abort.” |
| 不跑检查就提交 | SKILL.md 第 4 步(检查顺序 + fix anything the merge broke) |
| rebase 留个半完成状态 | SKILL.md 第 5 步(continue until all commits are rebased) |
| 模型从不自动加载 | frontmatter 的 description(“Use when…” 那句) |
| Codex 显示名不对 | agents/openai.yaml 的 interface 块 |
| 想进 ask-matt 地图 | ask-matt/SKILL.md Standalone 一节(目前未收录,AGENTS.md 要求同步) |