SuperAPI AI 工具集

lgnh-resolve-conflict

编程与开发

查看项目

更新于 11-06 16:22

技能介绍

用途

lgnh-resolve-conflict 用于在执行 Git rebase 或 merge 时解决代码冲突。它的目标不是简单挑一边,而是深入理解每个分支原本想做什么,产出一个既保留双方意图、又保持语法正确的解决方案。技能面向希望由 AI 辅助完成冲突处理、但仍需保留人工判断的开发者。

核心原则

  • 先理解再操作:在弄清冲突为何发生、双方各自意图之前不解决冲突。
  • 有歧义就问:当两个分支对同一逻辑做了有意的竞争性修改,且不清楚该选哪边或如何合并时,停止并询问用户,不猜测、不静默选边。
  • 默认不提交:解决冲突后只暂存文件,除非用户明确要求,否则不执行提交,也不运行 git rebase --continue / git merge --continue,而是告诉用户下一步该运行什么。

主要能力与流程

第 1 步:评估现状

运行 git status 判断当前情况:

  • 正在 rebase:存在 .git/rebase-merge/ 或 .git/rebase-apply/
  • 正在 merge:存在 .git/MERGE_HEAD
  • 两者都不是:没有进行中的冲突操作,告知用户并停止

同时找出所有冲突文件(git status 中显示为 both modified 或 Unmerged paths 的文件)。

第 2 步:理解各分支上下文

Rebase 场景下读取要变基到的目标分支、正在重放的提交,以及目标分支上与冲突文件相关的变更;Merge 场景下分别查看当前分支与待合并分支对冲突文件的改动。

第 3 步:分析每个冲突文件

  • 用 git diff -- <file> 查看原始冲突状态,定位所有 <<<<<<< 与 >>>>>>> 之间的冲突区域。
  • 用 git show :2:<file>(ours)、git show :3:<file>(theirs)、git show :1:<file>(base)做三方对比,弄清基线版本、双方各自改了什么以及为什么改。
  • 将冲突区域分类:非重叠(合并双方改动)、互补(选更好的或合并,不清楚时询问)、竞争(询问用户)、单边(采用有意义的改动)。

第 4 步:解决

编辑文件生成正确结果,要求保留双方意图、保持语法正确、不残留冲突标记、与文件及代码库其余部分一致,然后用 git add <file> 暂存。

第 5 步:验证与报告

  • 用 git diff --check --cached 确认无冲突标记,用 git status 确认无未合并路径。
  • 必须运行项目的 lint 与类型检查;失败则修复并重跑,直至通过。若项目没有相关配置,需在摘要中明确说明。
  • 输出冲突解决摘要,包括操作类型、基线分支、来源、每个文件的 ours/theirs/解决方式,以及建议的下一步命令。

使用方式

技能以对话方式工作:用户提出解决冲突的需求后,技能按上述步骤自行执行 Git 命令与分析,在需要业务判断时向用户提问,最后给出摘要和下一步操作建议。

适用场景

  • 多人协作中 rebase 或 merge 出现代码冲突
  • 希望保留双方改动意图而非简单取舍
  • 需要冲突解决后自动做 lint 与类型检查把关

限制与注意事项

  • 不会自动提交或继续 rebase/merge,需要用户手动执行后续命令。
  • 遇到竞争性逻辑修改无法判断时会中断并询问,不会强行给出结果。
  • ours/theirs 在 merge 与 rebase 中含义相反,需通过提交哈希确认。
  • 若 base 版本读取失败,可能是双方都新增了该文件,此时将两版都视为全新内容并逻辑合并。
  • 若项目未配置 lint 或类型检查,技能会明确说明而非静默跳过。
  • 关于收费、平台与详细安装方式,资料暂未提供。