mcpField
L
land-to-main

land-to-main

github.com/anorth开发112 次安装今天更新
代码仓库

关于 land-to-main

Land to Main 是将工作分支合入本地 main 的技能,不与远程仓库交互。它要求工作区干净并通过检查,先变基再快进;遇到意外或复杂故障时会暂停并等待用户指示。

主要功能

  1. 01检查分支与工作区状态
  2. 02变基前审查提交
  3. 03变基到本地 main
  4. 04合入前运行 lint 和测试
  5. 05快进且不改写历史

适用场景

  1. 01在本地合入已完成的工作分支
  2. 02避免合入未提交的更改
  3. 03在冲突或检查失败时安全暂停

安装

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

$npx skills add https://github.com/anorth/agent-skills --skill land-to-main

安装后在 Claude Code 中输入/land-to-main确认已加载。

详细介绍

合入 Main

将当前工作分支合入本地 main。远程仓库不在处理范围内——不要推送或拉取。

前置条件(快速失败)

  1. 当前不在 main 上:如果 HEAD 是 main,则拒绝并停止。
  2. 工作区干净:如果存在未提交的更改(已暂存或未暂存),则停止。合入过程中不要提交。
  3. 已经合入:如果工作分支和 main 指向同一提交,则报告这一情况并停止(无需执行任何操作)。

工作流程

按顺序执行以下步骤。遇到任何意外失败时,停止并等待用户指示。

1. 检查历史记录

查看工作分支上不在 main 中的提交(git log main..HEAD)。

  • 通常按原样合入。
  • 如果有任何提交看起来是 WIP、临时提交或“之后再修复”的提交,请先询问再继续。除非用户要求,否则不要压缩或改写提交。
2. 变基到本地 main
git rebase main
  • 简单冲突(明显只涉及一侧或机械性冲突):解决冲突,执行 git add,然后继续。
  • 复杂或语义冲突:停止,说明冲突情况并等待指示。
  • 绝不要使用 git rebase -i。
3. 运行代码检查和测试
  • 优先使用项目文档中说明的代码检查和测试入口。
  • 先运行代码检查,再运行测试。任一失败都必须立即停止——不要快进合入。
  • 除非项目文档明确说明生产构建是应运行的检查,否则不要运行完整的生产构建。
4. 快进 main

main 通常在另一个工作树中检出,因此不要在此处执行 git checkout main。

只有代码检查和测试都成功后,才执行以下操作:

  1. 找到检出了 main 的工作树:git worktree list
  2. 将该工作树快进到当前分支的提交(留在工作分支所在的工作树中):
git -C <main-worktree-path> merge --ff-only <work-branch-tip>

对 <work-branch-tip> 使用工作分支名称或其 SHA。

  • 只允许使用 --ff-only;如果无法快进,则停止并询问(不要创建合并提交)。
  • 如果 main 工作树存在本地更改,合并应当失败;中止并报告——不要在该工作树中执行会弄脏工作区的合并或暂存操作。
  • 如果没有工作树检出 main,可以直接运行 git push . HEAD:main。不要强制推送。
  • 留在工作分支上。不要删除任何分支。
5. 验证

确认工作分支和 main 指向同一提交(例如,比较 git rev-parse HEAD 和 git -C <main-worktree-path> rev-parse HEAD)。简要报告:分支名称、新的 main 提交(短 SHA + 提交主题),以及检查已通过。

严格规则

  • 仅操作本地 main——不要从远程获取、拉取或推送。
  • 除非用户明确要求,否则不要提交、修改提交、压缩提交或以其他方式改写历史。
  • 不要删除分支。
  • 最后留在工作分支上,并确保 main 已快进到与其一致。
  • 如果不确定如何继续:停止并等待用户指示。

评论

支持 Markdown