关于 land-to-main
Land to Main 是将工作分支合入本地 main 的技能,不与远程仓库交互。它要求工作区干净并通过检查,先变基再快进;遇到意外或复杂故障时会暂停并等待用户指示。
主要功能
- 01检查分支与工作区状态
- 02变基前审查提交
- 03变基到本地 main
- 04合入前运行 lint 和测试
- 05快进且不改写历史
适用场景
- 01在本地合入已完成的工作分支
- 02避免合入未提交的更改
- 03在冲突或检查失败时安全暂停
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ anorth/ agent-skills --skill land-to-main安装后在 Claude Code 中输入/land-to-main确认已加载。
详细介绍
合入 Main
将当前工作分支合入本地 main。远程仓库不在处理范围内——不要推送或拉取。
前置条件(快速失败)
- 当前不在
main上:如果HEAD是main,则拒绝并停止。 - 工作区干净:如果存在未提交的更改(已暂存或未暂存),则停止。合入过程中不要提交。
- 已经合入:如果工作分支和
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。
只有代码检查和测试都成功后,才执行以下操作:
- 找到检出了
main的工作树:git worktree list - 将该工作树快进到当前分支的提交(留在工作分支所在的工作树中):
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