关于 pull-changes-resolve-conflicts
面向 Git 团队的冲突处理技能,用于整合分支或诊断未合并路径。它要求先分析并按影响排序提出建议,获得确认后才能编辑解决冲突。
主要功能
- 01编辑前分析冲突
- 02按影响排序报告
- 03解决前征求用户确认
- 04提供合并与变基流程指引
适用场景
- 01将 main 整合到功能分支
- 02检查合并或变基后的冲突
- 03规划重叠改动的解决方案
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ cognitedata/ dune-skills --skill pull-changes-resolve-conflicts安装后在 Claude Code 中输入/pull-changes-resolve-conflicts确认已加载。
附带文件reference.md
详细介绍
拉取更改并解决合并冲突
将其他分支(通常是 main)合并到当前功能分支时,或 git status 显示合并或变基后存在未合并路径时,使用此技能。适用于任何基于 Git 的团队工作流;Dune/React 应用是常见场景,冲突通常集中在应用外壳和共享库中。
目标
- 保留当前分支上有意保留的工作;不要未经分析就假定“main 优先”或“我们这边优先”。
- 在编辑解决任何冲突之前,先让用户明确了解需要权衡的事项。
- 按影响程度排序讨论内容:先讨论结构、功能、API 和数据模型变更,再讨论样式、文案或间距。
硬性规则
- 不得静默解决 —— 在用户同意方案(或明确表示“采用你的建议”)之前,不得删除
<<<<<<</=======/>>>>>>>,也不得对存在冲突的文件运行git add。 - 遇到冲突就暂停 —— 如果合并或变基引入了冲突,先暂停并报告;除非用户明确要求,否则不得通过整份选用某一侧来草率处理大型文件。
- 优先考虑影响 —— 呈现冲突时,按以下类别大致分组并排序:
- P0 — 结构 / 产品: 删除路由、删除模块、移除功能、更改数据或 API 契约、SDK 或架构变更、身份验证或路由外壳。
- P1 — 行为: 逻辑、钩子、查询、筛选器、错误处理、加载状态。
- P2 — UI 结构: 布局区域、新增或移除的版块、导航。
- P3 — 呈现: 设计令牌、间距、类名、文案调整。
工作流
1. 拉取并集成(或诊断)
- 除非用户要求变基,否则优先运行
git fetch,然后运行git merge origin/main(或指定的分支)。 - 如果合并已在进行中,运行
git status并列出所有未合并文件。
2. 向用户报告冲突(明确说明)
清晰列出:
- 分支状态: 当前分支、目标分支(例如
origin/main),以及合并还是变基。 - 未合并文件: 仅列出路径;之后可选运行
git diff --name-only --diff-filter=U。 - 逐文件说明(简短): 根据路径和
git diff(不进行解决),用一行说明差异内容(例如“AlertsPage— 布局 + 新的数据范围”)。
3. 编辑前先分析
综合使用以下所有信息:
- 对话历史 —— 用户或团队希望在此分支上交付什么?
- 代码库线索 —— 如有产品或架构文档(例如
PRD.md)、当前分支的近期提交、文件归属信息(例如大型功能模块还是共享lib/)。 - 冲突区块 —— 合并期间使用
git show :2:path(我们这边)与git show :3:path(对方)进行比较,或阅读冲突标记;识别重复或彼此独立的更改。
将每个冲突区域归类为:
- 彼此独立 —— 可安全组合(例如导入排序 + 新属性)。
- 相互重叠 —— 必须择一或手动合并(相同行上的更改)。
- 存在损坏风险 —— 存在重复区块(不良合并后常见);标记并建议以其中一侧为基础重建,再手动重新应用另一侧的意图。
4. 提出建议并提问(必须)
向用户说明:
- 摘要表格或要点 —— 文件 → 建议采用的一侧或“手动合并” → 一句话说明理由。
- 按 P0 → P3 排序 —— 优先指出任何会移除功能或改变公开行为的内容。
- 明确提问 —— 说明所有不确定之处(例如:“保留 main 的全局行为,还是分支上的限定范围版本?”)。
- 询问用户的处理方向 —— 例如:“请回复:(a) 按照建议处理;(b) 文件 X 保留分支版本;(c) 文件 Y 保留 main 版本;(d) 中止合并。”
只有在用户确认(或给出明确的文件对应方案)之后,才应用解决方案:
- 优先进行小范围、精准的编辑;尽可能保留双方意图。
- 再次运行
git status;确保没有残留冲突标记;运行用户关注的已修改区域测试或 lint。
5. 如果用户想要中止操作
- 根据情况运行
git merge --abort或git rebase --abort;确认用户知晓,这会丢失该操作中正在进行的集成状态。
反模式(请勿这样做)
- 未经用户批准,就对整个仓库选择
--ours/--theirs。 - 因为主分支改动了同一个文件,就通过删除功能分支的工作来“解决”冲突。
- 将冲突列表隐藏在冗长的代码转储中,而不提供简短的摘要。
- 先修复影响较小的风格冲突,却让 P0 决策悬而未决。
快速参考
- **合并时 ours 与 theirs 的区别:**阶段 2 = 当前分支(
HEAD),阶段 3 = 传入的分支(MERGE_HEAD)。如有需要,可使用git checkout --conflict=merge <file>进行验证。 - **全栈或 Dune 应用中常见的高冲突路径:**根应用外壳、顶部导航、路由模块,以及共享的
lib/或hooks/。
可选的命令片段和合并消息模板,请参阅 reference.md。
评论
支持 Markdown