技能更新同步Skill PullingUpdatesfromSkillsRepository

此技能用于同步本地技能仓库与上游obra/superpowers-skills的更新,确保个人修改不被覆盖。适用于当会话开始指示有新的上游技能可用时,或手动更新到最新版本时。关键词:技能更新、Git同步、DevOps、仓库管理、自动化。

DevOps 0 次安装 0 次浏览 更新于 3/16/2026

名称: 从技能仓库拉取更新 描述: 同步本地技能仓库与上游obra/superpowers-skills的更改 使用时机: 当会话开始指示有新的上游技能可用时,或手动更新到最新版本时 版本: 1.2.0

从上游更新技能

概述

拉取并合并来自obra/superpowers-skill的上游更改到您的本地技能仓库,同时保留您的个人修改。

开始时宣布: “我正在使用更新技能技能与上游同步。”

前提条件

您的技能仓库必须配置了跟踪分支。插件会自动设置此功能(无论是作为具有origin远程的复刻,还是具有upstream远程)。

过程

步骤 1: 检查当前状态

运行:

cd ~/.config/superpowers/skills
git status

如果工作目录是脏的: 继续到步骤 2(暂存更改) 如果是干净的: 跳过到步骤 3

步骤 2: 暂存未提交的更改(如果需要)

运行:

git stash push -m "上游更新前的临时暂存"

记录: 是否暂存了更改(您稍后需要取消暂存)

步骤 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: 处理合并冲突(如果有)

如果有冲突:

  1. 运行 git status 查看冲突文件
  2. 对于每个冲突,向用户解释两个版本的更改内容
  3. 询问用户保留哪个版本或如何合并
  4. 编辑文件以解决冲突
  5. 对每个文件运行 git add <已解决文件>
  6. 运行 git commit 完成合并

步骤 7: 取消暂存更改(如果在步骤 2 中暂存了)

如果您暂存了更改:

git stash pop

如果与取消暂存的更改有冲突: 帮助用户解决它们

步骤 8: 验证一切工作正常

运行:

${SUPERPOWERS_SKILLS_ROOT}/skills/using-skills/find-skills

预期: 技能列表正确显示

步骤 9: 宣布完成

告诉用户:

  • 合并了多少新提交
  • 是否解决了任何冲突
  • 他们的暂存更改是否已恢复
  • 技能现在是最新的

常见问题

“已经是最新的”: 您的本地仓库是最新的,无需操作

“致命错误: 未配置上游”: 您的分支未跟踪远程分支。检查 git remote -v 查看可用远程,然后使用 git branch --set-upstream-to=<远程>/<分支> 设置跟踪

分离的 HEAD: 您不在分支上。询问用户是否要创建分支或检出主分支。

快速前向失败,分支分歧: 您的本地分支有远程没有的提交。需要常规合并,可能导致冲突。

记住

  • 合并前总是暂存未提交的工作
  • 清楚地向用户解释冲突
  • 更新后测试技能是否工作
  • 保留用户的本地提交/分支