关于 rebase
rebase 是用于 Git 操作的技能,可根据参数选择目标分支并执行变基。它会处理本地改动和冲突,并在成功后恢复其创建的暂存内容。
主要功能
- 01按参数选择变基目标
- 02变基前暂存本地改动
- 03检查目标分支近期变更
- 04冲突时逐步继续变基
- 05成功后恢复暂存内容
适用场景
- 01将当前分支变基到配置的基分支
- 02变基到 origin/main 或指定远程分支
- 03在保留本地改动的情况下整理分支
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ raine/ workmux --skill rebase安装后在 Claude Code 中输入/rebase确认已加载。
详细介绍
变基当前分支。
参数:$ARGUMENTS
行为:
- 不带参数:变基到当前分支的 workmux 基础分支
(
git config branch.<current>.workmux-base);如果未配置,则回退到本地 main - "origin":获取 origin,并变基到 origin/main
- "origin/branch":获取 origin,并变基到 origin/branch
- "branch":变基到本地分支(使用 "main" 可强制变基到本地 main)
步骤:
- 使用
git status --porcelain检查本地更改:- 如果工作树中有已暂存、未暂存或未跟踪的更改,使用以下命令将其暂存:
git stash push --include-untracked -m "workmux rebase"。 - 记住此命令是否创建了一个暂存项。已有的暂存项必须保持不变。
- 如果暂存失败,在获取或变基之前停止。
- 如果工作树中有已暂存、未暂存或未跟踪的更改,使用以下命令将其暂存:
- 解析参数:
- 不带参数 → 目标为当前分支的 workmux 基础分支
(
git config --get branch.$(git branch --show-current).workmux-base);如果 该值为空,则目标为 "main"。不获取。 - 包含 "/"(例如 "origin/develop")→ 拆分为远程和分支,获取该远程,目标为 remote/branch
- 仅为 "origin" → 获取 origin,目标为 "origin/main"
- 其他任何值 → 目标为该分支名称,不获取
- 不带参数 → 目标为当前分支的 workmux 基础分支
(
- 如果需要获取,运行:
git fetch <remote>。如果在变基开始前获取或解析目标失败,则 停止前恢复步骤 1 创建的暂存项。 - 运行:
git rebase <target> - 如果出现冲突,请谨慎处理(见下文)
- 继续操作,直到变基完成
- 如果步骤 1 创建了暂存项,使用
git stash pop --index恢复:- 仅在变基成功后恢复暂存项。
- 如果恢复时出现冲突,保留暂存项,报告冲突,并将受影响的文件留待手动解决。
处理冲突:
- 在解决任何冲突之前,先了解目标分支对每个冲突文件所做的更改
- 对每个冲突文件,运行
git log -p -n 3 <target> -- <file>,查看目标分支中该文件的近期更改 - 目标是同时保留目标分支和当前分支的更改
- 解决每个冲突后,将文件暂存,并使用
git rebase --continue继续 - 如果冲突过于复杂或不明确,请先寻求指导,再继续
评论
支持 Markdown