其他
当会话启动提示有上游技能更新或需手动更新本地技能仓库时,用…
适用于已配置跟踪分支的本地 Superpowers 技能仓库,从 obra/superpowers-skills 拉取并合并上游变更,同时保留个人修改。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 40/100 ×0.15
适用场景
当会话启动提示有上游技能更新或需手动更新特定
解决思路
- 开始同步前,宣布:"I'm using the Updating Skills skill to sync with upstream."
- 进入技能仓库:运行 `cd ~/.config/superpowers/skills`,然后运行 `git status` 检查当前状态。
- 如果工作目录有未提交改动(dirty),继续执行 Step 2;如果干净(clean),跳到 Step 3。
- 如有未提交改动,运行 `git stash push -m "Temporary stash before upstream update"` 暂存改动。
- 记录是否执行过 stash,因为后续需要恢复。
- 检测跟踪远端:运行 `TRACKING_REMOTE=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null | cut -d'/' -f1 || echo "")`。
- 拉取远端更新:如果 `$TRACKING_REMOTE` 非空,运行 `git fetch "$TRACKING_REMOTE" 2>/dev/null || true`;否则运行 `git fetch upstream 2>/dev/null || git fetch origin 2>/dev/null || true`。
- 检查有哪些新提交:运行 `git log HEAD..@{u} --oneline`,并向用户展示将被拉取的提交列表。
- 说明 `@{u}` 指当前分支的上游跟踪分支。
- 先尝试 fast-forward 合并:运行 `git merge --ff-only @{u}`。
- 如果 fast-forward 成功,跳到 Step 7(fast-forward 不可能产生冲突)。
- 如果 fast-forward 失败,说明分支已分叉,尝试普通合并:运行 `git merge @{u}`。
- 如果普通合并干净成功,继续 Step 7。
- 如果出现冲突,进入冲突处理。
- 处理合并冲突:运行 `git status` 查看冲突文件。
- 对每个冲突,向用户解释两个版本各自改了什么。
- 询问用户保留哪个版本或如何合并。
- 编辑文件解决冲突。
- 对每个已解决文件运行 `git add <resolved-file>`。
- 运行 `git commit` 完成合并。
- 如果在 Step 2 执行过 stash,运行 `git stash pop` 恢复暂存改动。
- 如果恢复 stash 时出现冲突,帮助用户解决。
- 验证更新后技能可用:运行 `${SUPERPOWERS_SKILLS_ROOT}/skills/using-skills/find-skills`,预期技能列表正常显示。
- 宣布完成,并告诉用户:合并了多少个新提交、是否解决过冲突、暂存改动是否已恢复、技能现已更新到最新。
- 常见问题:如果显示 "Already up to date",说明本地仓库已是最新,无需操作。
- 常见问题:如果出现 "fatal: no upstream configured",说明分支未跟踪远端分支;运行 `git remote -v` 查看可用远端,然后用 `git branch --set-upstream-to=<remote>/<branch>` 设置跟踪。
- 常见问题:如果处于 Detached HEAD,说明不在分支上;询问用户是要创建分支还是检出 main。
- 常见问题:如果 fast-forward 失败且分支分叉,说明本地分支有远端没有的提交;需要普通合并,可能产生冲突。
- 始终在合并前 stash 未提交的工作。
- 清晰地向用户解释冲突。
- 更新后测试技能是否正常工作。
- 保留用户的本地提交/分支。
适用边界 · 注意事项
- 未配置跟踪分支或远端时不要直接更新;先用 `git remote -v` 检查并设置跟踪。
- 不适用于非 Superpowers 技能仓库或非 obra/superpowers-skills 上游。
- 如果本地修改不能安全 stash/合并,或用户无法参与冲突决策,不要自动执行。