with one click
ms-git-sync-branch
从上游主分支拉取最新代码,同步到本地主分支,再合并/变基到当前工作分支;遇冲突自动解决
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
从上游主分支拉取最新代码,同步到本地主分支,再合并/变基到当前工作分支;遇冲突自动解决
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
专门用于 my-claude 项目从上游仓库一键同步更新。自动检测并添加 upstream remote,从 upstream/master 更新到本地 master,合并到当前分支,检查配置变更并提示调整 inventory 配置,最后引导提交和推送。当用户在 my-claude 项目中说"从上游更新"、"同步上游"、"拉取上游代码"等时使用此 skill。
仅用 Git 分析改动并自动生成 conventional commit 信息(可选 emoji);必要时建议拆分提交,默认运行本地 Git 钩子(可 --no-verify 跳过);智能推断是否推送到远程
PR 前将开发分支的多个 commit 压缩成一个,自动同步上游代码并生成 Conventional Commits 风格的提交信息(可选 emoji)
| name | ms-git-sync-branch |
| description | 从上游主分支拉取最新代码,同步到本地主分支,再合并/变基到当前工作分支;遇冲突自动解决 |
| allowed-tools | Bash(git fetch, git checkout, git pull, git merge, git rebase, git branch, git rev-parse, git log, git status, git diff, git remote, git stash, git stash pop, git add, git rebase --continue, git merge --continue, git symbolic-ref), Read(**), Edit(**) |
| argument-hint | [--remote <remote>] [--branch <branch>] [--strategy merge|rebase] [--stash] [--no-resolve] |
从上游主分支拉取最新代码 → 同步到本地主分支 → 合并/变基到当前工作分支。 遇到合并冲突时,自动分析并尝试解决。
/ms-git-sync-branch
/ms-git-sync-branch --remote origin --branch main
/ms-git-sync-branch --strategy rebase
/ms-git-sync-branch --stash
/ms-git-sync-branch --no-resolve
--remote <remote>:指定远程仓库名称(如 origin、upstream)。省略则自动检测。--branch <branch>:指定远程主分支名称(如 main、master、develop)。省略则自动检测。--strategy merge|rebase:指定合并策略。省略则根据项目惯例自动推断。--stash:同步前自动 git stash 暂存未提交的改动,完成后 git stash pop 恢复。--no-resolve:遇到冲突时不自动解决,仅报告冲突文件列表并暂停,等待用户手动处理。git rev-parse --is-inside-work-tree 确认位于 Git 仓库内。git symbolic-ref --short HEAD)。若用户未指定参数,按以下策略自动推断:
git remote 列出所有远程仓库。upstream,优先使用(fork 模式常见)。origin,使用 origin。upstream,列出远程列表并询问用户选择。git remote show <remote> 或 git symbolic-ref refs/remotes/<remote>/HEAD 获取远程默认分支。main → master → develop。优先检测 PR 场景(最高优先级):
git rev-parse --abbrev-ref @{u} 检查当前分支是否有上游跟踪分支。origin/feature-branch),说明分支已推送。git log @{u}..HEAD 检查本地是否有未推送的提交。检查 git config pull.rebase 的值:
true → 使用 rebase。false 或未设置 → 使用 merge。检查最近 20 条 git log --oneline 中 merge commit 与线性提交的比例:
若仍不确定,默认使用 merge(更安全)。
git status --porcelain 检查工作区是否有未提交改动。--stash → 自动执行 git stash push -m "sync-branch: auto stash before sync"。步骤流程:
a. git fetch <remote> # 拉取远程最新引用
b. git checkout <main-branch> # 切换到本地主分支
c. git merge <remote>/<main-branch> --ff-only # 快进合并远程主分支
- 若快进失败(本地主分支有独立提交),改用 git pull --rebase 或提示用户处理
d. git checkout <original-branch> # 切回原工作分支
根据推断的策略执行:
git merge <main-branch>
git rebase <main-branch>
若合并/变基产生冲突:
git status 和 git diff 识别所有冲突文件。<<<<<<<、=======、>>>>>>>),判断:
Edit 工具修改文件,移除所有冲突标记。git add <file> 标记为已解决。git merge --continue 或 git commit。git rebase --continue(可能需要多轮,逐 commit 处理)。--no-resolve)git add <file>:标记为已解决。git merge --continue / git rebase --continue:继续合并/变基。git merge --abort / git rebase --abort:中止操作。git stash,此时执行 git stash pop 恢复工作区。
stash pop 产生冲突,同样尝试自动解决或提示用户。同步完成后,打印以下摘要信息:
同步完成 ✓
远程仓库:origin
主分支: main
合并策略:merge
工作分支:feature/my-feature
更新情况:
- 本地 main 更新了 12 个 commit(a1b2c3d → e4f5g6h)
- 合并到 feature/my-feature 成功(无冲突 / 已解决 N 处冲突)
冲突解决记录(如有):
1. src/config.ts — 双方均修改了 DEFAULT_TIMEOUT 值,采用上游值(30s → 60s)
2. package.json — 依赖版本冲突,合并双方新增的依赖项
后续建议:
- 建议运行测试确认合并后功能正常
- 若有问题可通过 git reset --hard HEAD~1 回退合并
git push,所有操作仅限本地。git checkout . 或 git clean。--abort 指令;成功后提供回退命令参考。git config --global 等操作。--strategy rebase 且分支已推送,发出警告提示需要 force push 的风险。| 场景 | 处理方式 |
|---|---|
| 当前分支就是主分支 | 仅执行 git pull,跳过合并步骤 |
| 本地主分支不存在 | 从远程 checkout 创建本地主分支 |
| 远程不可达(网络问题) | 报错并建议检查网络或 remote URL |
| detached HEAD 状态 | 提示用户先切换到具名分支 |
| 未提交的 merge/rebase 进行中 | 提示用户先完成或中止当前操作 |
| stash pop 产生冲突 | 同样尝试自动解决或提示用户 |
| rebase 多 commit 逐个冲突 | 逐个 commit 处理,每轮 rebase --continue |
| 分支已推送 + 用户指定 rebase | 警告:将改写远程历史,需 force push,询问是否继续 |
| PR 场景(分支已推送) | 自动使用 merge,忽略用户指定的 rebase(除非明确 --force) |