关于 Pulling Updates from Skills Repository
用于将上游更改同步到本地 skills 仓库,同时保留个人修改。该技能涵盖检查状态、获取更新、合并、冲突处理和验证。
主要功能
- 01检查仓库状态并暂存本地更改
- 02查找跟踪远程并获取更新
- 03合并前查看新增提交
- 04指导处理合并冲突
- 05恢复更改并验证技能列表
适用场景
- 01从上游更新 skills 仓库
- 02同步时保留未提交的工作
- 03处理本地与上游更改分歧后的冲突
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ obra/ superpowers-skills --skill pulling-updates-from-skills-repository安装后在 Claude Code 中输入/pulling-updates-from-skills-repository确认已加载。
详细介绍
从上游更新 Skills
概览
从 obra/superpowers-skills 拉取并合并上游更改到本地 Skills 仓库,同时保留个人修改。
开始时告知:“我正在使用 Updating Skills 技能与上游同步。”
前提条件
你的 Skills 仓库必须配置跟踪分支。插件会自动完成设置(通过 origin 远程仓库作为 fork,或配置 upstream 远程仓库)。
流程
步骤 1:检查当前状态
运行:
cd ~/.config/superpowers/skills
git status
**如果工作目录有未提交的更改:**继续执行步骤 2(暂存更改) **如果工作目录干净:**跳到步骤 3
步骤 2:暂存未提交的更改(如需要)
运行:
git stash push -m "Temporary stash before upstream update"
记录:是否暂存了更改(稍后需要取消暂存)
步骤 3:确定跟踪远程仓库并获取更改
首先,检测要使用的远程仓库:
TRACKING_REMOTE=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null | cut -d'/' -f1 || echo "")
然后,从相应的远程仓库获取更改:
if [ -n "$TRACKING_REMOTE" ]; then
git fetch "$TRACKING_REMOTE" 2>/dev/null || true
else
git fetch upstream 2>/dev/null || git fetch origin 2>/dev/null || true
fi
预期结果:从跟踪远程仓库获取最新提交(或回退到 upstream/origin)
步骤 4:检查新增内容
运行:
git log HEAD..@{u} --oneline
向用户展示:即将拉取的新提交列表
注意:@{u} 指当前分支的上游跟踪分支
步骤 5:合并更改
首先,尝试快进合并(最简洁的选项):
git merge --ff-only @{u}
**如果快进合并成功:**跳到步骤 7(快进合并不会产生冲突) **如果快进合并失败:**你的分支已分叉。尝试常规合并:
git merge @{u}
**如果合并成功且没有冲突:**继续执行步骤 7 **如果发生冲突:**继续执行冲突解决流程
步骤 6:处理合并冲突(如有)
如果发生冲突:
- 运行
git status查看冲突文件 - 针对每个冲突,向用户说明两个版本分别有哪些更改
- 询问用户要保留哪个版本,或如何合并
- 编辑文件以解决冲突
- 对每个文件运行
git add <resolved-file> - 运行
git commit完成合并
步骤 7:恢复暂存的更改(如步骤 2 中已暂存)
如果暂存了更改:
git stash pop
**如果恢复已暂存的更改时发生冲突:**帮助用户解决冲突
步骤 8:验证一切正常
运行:
${SUPERPOWERS_SKILLS_ROOT}/skills/using-skills/find-skills
预期结果:Skills 列表正确显示
步骤 9:宣布完成
告知用户:
- 合并了多少个新提交
- 是否解决了冲突
- 是否恢复了暂存的更改
- Skills 现已更新至最新
常见问题
“Already up to date”:本地仓库已是最新状态,无需操作
“fatal: no upstream configured”:你的分支没有跟踪远程分支。运行 git remote -v 查看可用的远程仓库,然后使用 git branch --set-upstream-to=<remote>/<branch> 设置跟踪关系
Detached HEAD:你当前不在任何分支上。询问用户是否要创建分支或检出 main。
快进失败,分支已分叉:本地分支包含远程仓库中没有的提交。需要进行常规合并,这可能会产生冲突。
请记住
- 合并前务必暂存未提交的工作
- 向用户清楚说明冲突
- 更新后测试 Skills 是否正常工作
- 保留用户的本地提交和分支