mcpField
M
melt

melt

github.com/paulnsorensen开发19654 次安装6 天前更新
代码仓库

关于 melt

melt 是用于解决 Git 冲突并保留原分支以便恢复的技能。它按顺序尝试修复 squash 残留、语义合并及手动处理,并在操作就绪后继续执行。

主要功能

  1. 01检测并修复 squash 残留
  2. 02汇总冲突及操作状态
  3. 03预览 mergiraf 语义合并
  4. 04以 rerere 和手动处理作为后备
  5. 05继续已就绪的 Git 操作

适用场景

  1. 01处理 squash 合并后的冲突
  2. 02检查并解决剩余文本冲突
  3. 03所有路径暂存后继续合并

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/paulnsorensen/easy-cheese --skill melt

安装后在 Claude Code 中输入/melt确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

wedge.toml
references/
cascade-stages.md
commands.md

详细介绍

/melt

在不重写已发布分支的前提下解决当前冲突。 使用安全级联:修复 squash 残留 → 摘要 → mergiraf → rerere → 手动解决 → 继续操作。 保留原始分支以便恢复。此处绝不推送、重置或强制推送。

使用选定的源代码后端进行搜索、限定范围的读取和手动编辑。 遵循代码智能路由:搜索、新鲜读取、安全写入。

1. 修复 squash 残留

在解决文件冲突前运行:

python3 skills/melt/scripts/melt.pyz detect-squash-residue --apply

当基准不是 origin/main 时,使用 --base <ref>。 当 Git 无法识别原始分支时,使用 --branch <name>。 默认情况下,该命令会预览,不会使用 --apply。 安全时,它会创建 <original-branch>-clean,并按顺序重放已验证的提交。 否则,它会将基准合并到原始分支。 中止被中断的操作前,它会预先检查分支冲突。 它绝不会推送或重写任一分支。

如果 application.state 为 confirmation-required,请保持当前操作不变。 询问一次是否要丢弃暂存的解决结果并中止该操作。 获得明确确认后,使用 --apply --abort-operation 重新运行。 如果用户拒绝确认,则继续现有操作。 如果它为 failed,报告 failed_step、error 和 recovery_branch;然后停止。 如果它为 needs-resolution,继续级联流程。 如果它为 applied 且没有冲突,检查操作状态并继续交接。 如果它为 not-applied,继续处理现有冲突。

2. 诊断和检查

python3 skills/melt/scripts/melt.pyz conflict-summary
python3 skills/melt/scripts/melt.pyz operation

阅读每个摘要代码块以及操作的 unmerged_paths 和 conflict_marker_files。 仅当提交意图不明确时,才使用 git log --merge --oneline。 不要仅仅因为结构化合并没有标记就接受它。

3. 解决结构冲突

先预览 mergiraf,然后检查其语义结果,再应用:

python3 skills/melt/scripts/melt.pyz batch-resolve
python3 skills/melt/scripts/melt.pyz batch-resolve --debug <path>

调试命令会给出合并后的输出路径、日志路径和标记数量。 使用选定的后端读取该输出。确认双方预期的编辑都保留了下来。 然后应用干净的解决结果并暂存:

python3 skills/melt/scripts/melt.pyz batch-resolve --apply

Melt 文本工具拒绝处理二进制文件。对于普通二进制文件,选择一侧并暂存。 对于生成的归档文件,应解决源文件后重新构建归档。

4. 解决剩余冲突

再次运行 operation。其 rerere_enabled、configured_merge_tool 和 selected_manual_tool 字段定义了可用的后备方式。 启用 rerere 时,检查 git rerere status 和 git rerere diff。 如果已禁用,报告该设置并跳过此阶段。 本次调用期间不要更改 Git 全局配置。

对于未解决的文本冲突,使用选定的手动工具,或在检查语义后进行编辑。 当 selected_manual_tool 为 kdiff3 时,优先使用 git mergetool --tool=kdiff3 <path>。 否则,使用已配置的工具并报告替代情况。 暂存每个已解决的路径。应根据清单解决锁文件,而不是根据其中的冲突文本解决。

仅在选择一侧、重新生成锁文件、调试 mergiraf 或维护 rerere 数据时,才阅读条件级联阶段。 其中的侧边选择和锁文件命令需要判断预期内容。

5. 继续一次

python3 skills/melt/scripts/melt.pyz operation
python3 skills/melt/scripts/melt.pyz operation --continue

只有当状态为 ready 时才运行 --continue。 它会拒绝存在未合并路径或冲突标记的情况,然后继续操作,且不会打开交互式编辑器。 如果它返回 blocked,请解决下一个冲突并重复步骤 2–5。 如果它返回 failure,报告 failed_step 并停止。 只有当状态为 complete 时才进行交接。 不要单独运行原始 Git 继续命令。

交接

完成后,使用共享交接门。 根据上游调用和传递的标志填入占位符。

handoff_gate:
  source_skill: /melt
  id: post-melt-next-step
  prompt: The Git operation is complete. What should happen next?
  recommended: rerun-upstream
  multi: false
  options:
    - id: rerun-upstream
      label: Re-run the upstream gate
      description: Run the invocation that found the conflict.
      dispatch: <upstream_invocation>
      context:
        upstream_invocation: <command>
        flags: [<propagated flags>]
    - id: plate-it
      label: Plate it
      description: Publish completed work through /plate.
      dispatch: /plate
      context:
        flags: [<propagated --hard, --open-pr>]
    - id: checkpoint-and-stop
      label: Checkpoint & stop
      description: Write a durable checkpoint, then pause the pipeline.
      dispatch: /wheypoint
    - id: stop
      label: Stop
      description: Leave the completed operation for inspection.
      dispatch: none

如果不知道其调用方式,请省略 rerun-upstream 并建议选择 stop。 等待用户选择。立即运行用户选定的非停止操作。 Melt 从不提交或推送。发布工作由 /plate 负责。

所有 Melt 命令请参阅生成的命令清单。

评论

支持 Markdown