关于 merge-base-branch
merge-base-branch 是一项将用户选择的基础分支合并到当前 Git 分支,并运行 lint、覆盖率测试和构建的技能。它还引导分支核验、冲突解决,并汇总流程中创建的提交。
主要功能
- 01识别并选择基础分支
- 02获取并合并所选分支
- 03引导解决合并冲突
- 04运行 lint、覆盖率测试和构建
- 05汇总结果与新建提交
适用场景
- 01将功能分支与基础分支同步
- 02按引导流程解决合并冲突
- 03合并后运行本地质量检查
- 04确认合并及检查结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ morphet81/ cheat-sheets --skill merge-base-branch安装后在 Claude Code 中输入/merge-base-branch确认已加载。
详细介绍
将选定的基分支合并到当前分支,并确保最终通过 lint 检查、完整测试覆盖率和构建。适用于需要让分支与其父分支完全同步,并在本地通过 CI 质量检查的场景。
用法:
/merge-base-branch— 执行下方完整工作流
前置条件:
- 仓库根目录必须是一个位于命名分支上的 git 检出(不能处于分离的 HEAD 状态)。
- 如果项目使用 Node/npm,
package.json必须定义lint、test:coverage和build脚本。如果缺少package.json或其中缺少任一脚本,请报告缺失项并停止(不得在未执行规定检查的情况下合并或继续)。
说明:
-
当前分支:
- 运行
git branch --show-current。如果处于分离的 HEAD 状态,请告知用户并停止。
- 运行
-
确定基分支候选项,然后让用户选择:
- 首先,如果仓库根目录存在
.agent,读取其中的baseBranch=<value>。如果存在该值,它就是检测到的候选项。 - 否则,根据 git 推断:运行
git merge-base --fork-point main HEAD、git merge-base --fork-point master HEAD和git merge-base --fork-point develop HEAD。任何能返回提交的分支名都算匹配项。如果恰好有一个匹配项,它就是检测到的候选项。如果有多个匹配项,按优先级选择:main、master、develop。如果没有匹配项,则不设置检测到的候选项。 - 使用
AskUserQuestion让用户选择要合并的基分支。始终将main作为选项。若检测到的候选项已设置且不是main,则将其作为选项。若master和develop存在于origin上(或本地),则也将它们作为选项。为每个选项添加简短标签(例如“根据历史记录检测到:develop”)。等待用户回答;所选分支即为<base-branch>。
- 首先,如果仓库根目录存在
-
验证基分支并获取更新:
- 使用
git rev-parse --verify origin/<base-branch>验证;若失败,则使用git rev-parse --verify <base-branch>验证。若两者都不存在,请告知用户并停止。 - 运行
git fetch origin <base-branch>。若失败,显示错误并停止。
- 使用
-
如果基分支已是最新状态,则停止:
- 将
<merge-ref>设为获取更新后存在的origin/<base-branch>;否则设为仅存在于本地的<base-branch>。 - 运行
git rev-list --count HEAD..<merge-ref>(或等效命令:检查git log --oneline HEAD..<merge-ref>是否没有提交)。 - 如果计数为 0,告知用户当前分支已包含来自
<merge-ref>的所有内容,无需合并。如果工作区不干净,请说明仍有未提交的更改。停止(此工作流中不要提交 WIP、合并或运行 lint、测试和构建)。
- 将
-
在合并前提交所有未提交的工作:
- 如果
git status显示没有需要提交的未暂存、已暂存或未跟踪更改,则跳至第 6 步。 - 否则暂存并提交工作区中的所有内容(不限于当前会话中修改的文件)。如果差异明显包含不同的逻辑块(例如按功能领域或目录划分),则拆分为多个提交;每个提交都应有清晰的提交信息。使用
git add选择性暂存(或使用git add -p)来创建有条理的提交;存在多个不同的逻辑块时,不要将无关工作压入同一个提交。
- 如果
-
合并基分支:
- 运行
git merge origin/<base-branch> --no-edit(只有在不存在origin/<base-branch>、但本地分支存在时,才使用git merge <base-branch> --no-edit)。 - 如果合并成功,简要概述已合并的提交。
- 运行
-
解决冲突并完成合并:
- 如果存在冲突:使用
git diff --name-only --diff-filter=U列出冲突文件,解决每个文件中的冲突(移除冲突标记,并根据意图进行合并或选择——上游修复优先保留基分支版本,功能代码保留当前分支版本),然后对每个已解决的文件运行git add,并运行git merge --continue --no-edit,直到合并完成。
- 如果存在冲突:使用
-
Lint:
- 在仓库根目录运行
npm run lint。修复所有报告的问题;反复运行,直到通过。
- 在仓库根目录运行
-
Lint 后提交(如有更改):
- 如果 Lint 修复(或格式化程序造成的变更)修改了文件,请使用恰当的提交信息进行提交(如果涉及多个独立改动,可创建一个或多个提交)。
-
运行带覆盖率的测试:
- 运行
npm run test:coverage。如果失败,请查看覆盖率报告和所有失败输出;添加或调整测试,直到所有代码行的覆盖率都达到 100%(以项目和工具的要求为准)。反复运行并迭代,直到命令成功。
- 运行
-
提交测试/覆盖率相关更改:
- 提交步骤 10 中的任何测试或源代码更改,并使用清晰的提交信息。
-
构建:
- 运行
npm run build。修复编译器/打包工具错误;反复运行,直到通过。
- 运行
-
提交构建修复(如有):
- 如果步骤 12 产生了文件更改,请提交。
**用户摘要:**使用的基础分支、合并结果(或“已是最新”)、Lint/测试/构建结果,以及本次运行中创建的提交列表。
评论
支持 Markdown