skills/git/git-merge/SKILL.md
把指定源分支 merge 进当前分支。merge 前 fetch 确保用源分支的远端最新版,冲突半自动解决(当前分支有实质改动的以当前为准、否则以源分支为准),拿不准时停下用 AskUserQuestion 问用户、绝不自主决定。保留合并提交历史(不改写历史,故不需备份分支)。触发词:「merge 分支 X」「合并 X 进来」「把 X 并入当前分支」。
npx skillsauth add lazygophers/ccplugin git-mergeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
merge 保留历史、可回退(git merge --abort / git reset),比 rebase 安全。铁律:拉源分支最新 → 半自动解冲突 → 拿不准必停问。
git fetch,合 origin/<源分支>,禁用本地陈旧副本。SRC=<源分支> # 缺省 → 报错要求指定,不猜
CUR=$(git branch --show-current)
git status --porcelain # 必须干净;脏 → 先 git-commit 或 git stash(记下,merge 后 pop)
git fetch origin "$SRC"
git merge "origin/$SRC"
每个冲突文件按下表判定。⚠️ merge 中 --ours=当前分支、--theirs=被合入的源分支(与 rebase 相反):
| 情形 | 语义 | 命令(merge 语境) |
| --- | --- | --- |
| 该文件只有当前分支动过 | 以当前分支为准 | git checkout --ours <file> ← ours=当前分支 |
| 该文件只有源分支动过 | 以源分支为准 | git checkout --theirs <file> ← theirs=源分支 |
| 两边都实质改同一逻辑 | 拿不准 | 🔴 STOP,AskUserQuestion 列冲突 hunk 让用户裁,禁自主 |
判定「有实质改动」:git log origin/$SRC..HEAD -- <file> 看当前分支侧是否有针对该文件的提交(空=只源分支动过)。方向记忆表 + -s ours 剧毒警告 + -X 用法见 references/conflict-resolution.md。
🔴 用户说「都以当前为准」≠ 全盘 --ours / -X ours:仍须逐文件判定。两边都实质改同一文件时,盲选当前会静默丢弃源分支改动;这类文件照样 STOP 问用户,别被一句「以当前为准」诱导跳过判定。更禁 git merge -s ours(丢弃源分支全部改动,只留假合并记录)。
解完一个文件:
git add <file>
git commit --no-edit # 全部解完后,生成合并提交
⚠️ git add 前确认文件内无残留 <<<<<<< / ======= / >>>>>>> 标记。
git log --oneline --graph -5 # 确认合并结果
回显:merge 完成 + 合并提交 hash。回退手段见 references/recovery.md。
| 触发条件 | 一线修复 | 仍失败兜底 |
| --- | --- | --- |
| merge 冲突拿不准 | 🔴 STOP + AskUserQuestion 列 hunk | 用户也不确定 → git merge --abort 回原状,报「需人工介入」 |
| 中途想放弃 | git merge --abort(回到 merge 前) | 已 commit → git reset --hard HEAD~1(确认后) |
| fast-forward 非预期 | 想留合并记录 → git merge --no-ff 重来 | 用户要 ff → 保持默认 |
| fetch 失败(网络/权限) | 重试 fetch;确认 remote 名正确 | 拉不到 → STOP,不拿本地陈旧分支 merge(违硬规 1) |
| 源分支不存在 | 列远端分支让用户确认名 | 名确实错 → STOP 待正确分支名 |
| add 后仍见冲突标记 | 重新编辑去掉 <<<</====/>>>> 再 add | 拿不准该留哪边 → STOP 问用户 |
--abort/reset),故不像 git-rebase 强制建备份分支;但已 push 的合并 reset 仍影响协作者。--ours/--theirs 方向与 git-rebase 正好相反,跨 skill 操作勿混。tools
UI/UX 与布局设计——做界面布局/结构/导航/组件/交互的设计决策。触发:做UI/UX/布局/排版/导航/组件/交互/栅格/响应式/图表选型/字体配对。按媒介路由 HTML/Web、原生 App(iOS/Android/桌面)、CLI、TUI。需后端动态系统不适用;配色/主题/色板走姊妹 skill design-color。
tools
主题与配色设计——做颜色搭配/调色板/主题/品牌色阶/暗模式的设计决策。触发:选配色/调色/主题/色板/品牌色/暗模式/对比度/色盲/UI风格。按媒介路由 HTML/Web(CSS变量)、原生App(平台token)、CLI(ANSI)、TUI(真彩/256/16降级)。保证可访问性(对比度/色盲安全)。需后端动态系统不适用;UI/UX 布局/组件/交互走姊妹 skill design-uiux。
tools
跨任意组件(plugin/skill/agent/command)的验证驱动优化循环纪律 skill。当用户要优化某个已有组件却无明确方向、或要防止改了反而更差(自评乐观偏差 / 多维同改归因失效 / 为凑分加废话膨胀)、或要把一套通用「评分→单变量改→改后验证严格更好才留否则回滚→触顶停」的纪律套到任意组件上时使用。管优化过程本身的纪律(validation gate / ratchet / 独立验证 / 触顶停),不评单组件深度(交 skill-dev),不查插件接线(交 plugin-dev)。仅手动 /optimize-any 触发。
data-ai
两层规则记忆 (基于 .skein/spec)。planning 时 recall 召回相关规则、task finish 后 sediment 沉淀学习 + prune 自动精简过期/重复/断链规则。core 常驻硬规 + recall 按需召回, 经判定门自动写盘 (不逐次问用户)。产出 .skein/spec 下 core/recall 规则文件 + index。另支持空仓 bootstrap 播种规则基线、记忆大面积失效 (大重构/换栈) 时 reconstruct 可逆归档后按项目类型分型重建、maintain 手动体检 (超预算/stale/断链/重复/废弃, --apply 自动修复)、auto-fix (Stop hook 写 .pending-fix 标记 → main 派 skein-specer bg 跑 maintain --apply 全自动修, 断链只报告)。