aic
v0.5.6

能力 · 合并冲突

解决合并冲突。
无需手动合并。

aic 读取每一个冲突文件,提出干净的解决方案,并把 diff 给你看。你逐文件确认——没有你的点头什么都不落地——然后它替你完成合并。

然后运行 aic resolve

aic 如何解决一次冲突

resolve 是一套流程,不是魔法棒。aic 遍历每个冲突文件、提出修复,并在每一步停下来等你确认。

  1. 检测 aic resolve 读取仓库状态。如果你正处于合并中且有未合并的文件,它会列出来。
  2. 逐文件解决 对每个文件,aic 把冲突内容发给你的模型,取回一份不含冲突标记的版本。如果仍有标记漏网,它会重试一次。
  3. 审查 diff aic 把所有提议的解决汇总成一个 diff——标记被移除、两边被调和——让你看清究竟会改什么。
  4. 逐文件确认 每个文件都有自己的 apply? 提示。回答 yes,aic 就写入解决方案并暂存;回答 no,那个文件原封不动。
  5. 完成 当没有未合并的内容时,aic 替你执行合并的 --continue。流程中被卡住的点会带着清晰的交接说明上报,而不是一个莫名其妙的计数。

两种入口

你不必记命令。有一个显式的动词,还有一个在你忘记时接住你的守卫。

  • aic resolve 显式的动词。只要你的仓库正处于合并中,随时运行它,aic 会从上面的检测步骤接手。
  • 提交守卫 在一个有冲突的仓库里运行普通的 aic,它会察觉、提议交接给 resolve,而更深一层的守卫会拦下任何仍带有冲突标记的提交。友好的前门,加上一道安全网。

没有你的点头,什么都不落地

核心就一句话:aic 提议,你拍板。它绝不写入一个你没看过、没批准的解决方案。

aic 留给你的部分

先把丑话说前面,让你清楚工具到哪儿结束、你从哪儿接手。这些是 v1 的限制。

  • 仅限合并冲突 aic 处理的是有冲突的合并状态。进行中的 rebase 或 am 在 v1 中会被检测到并拒绝——先完成或中止它,再来 resolve。
  • 有些冲突无法自动解决 二进制文件、超大文件,以及删除/修改类冲突会被跳过并给出原因——aic 会指给你看,让你手动解决。
  • 完成步骤是全有或全无 无论怎样 --continue 都会卡在任何未合并的路径上,所以哪怕只剩一个阻塞点,完成步骤也走不下去。aic 的交接说明会确切告诉你还剩什么。

简而言之

aic resolve 读取你的冲突文件,提出你确实能审查的解决方案,只写入你批准的部分——然后完成合并。它和 aic 用于提交的那套「读 diff、起草修复、交付」循环是同一个,只是指向了 git 里最难看的地方。