mcpField
R
rebase

rebase

github.com/raineDevelopment3.0k42 installsUpdated 3d ago
Repository

About rebase

rebase is a Git skill that selects a target branch from its arguments and rebases the current branch onto it. It stashes local changes, guides conflict handling, and restores its own stash after a successful rebase.

Key features

  1. 01Choose a rebase target from arguments
  2. 02Stash local changes before rebasing
  3. 03Review recent target-branch changes
  4. 04Continue the rebase through conflicts
  5. 05Restore the created stash on success

Use cases

  1. 01Rebase the current branch onto its configured base
  2. 02Rebase onto origin/main or a named remote branch
  3. 03Rebase while preserving local changes

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/raine/workmux --skill rebase

After installing, type/rebasein Claude Code to confirm it loaded.

Details

From the project README

Rebase the current branch.

Arguments: $ARGUMENTS

Behavior:

  • No arguments: rebase on the current branch's workmux base branch (git config branch.<current>.workmux-base), falling back to local main when none is configured
  • "origin": fetch origin, rebase on origin/main
  • "origin/branch": fetch origin, rebase on origin/branch
  • "branch": rebase on local branch (use "main" to force a rebase on local main)

Steps:

  1. Check for local changes with git status --porcelain:
    • If the working tree has staged, unstaged, or untracked changes, stash them with git stash push --include-untracked -m "workmux rebase".
    • Remember whether this command created a stash. Existing stash entries must remain untouched.
    • If stashing fails, stop before fetching or rebasing.
  2. Parse arguments:
    • No args → target is the current branch's workmux base branch (git config --get branch.$(git branch --show-current).workmux-base); if that is empty, target is "main". No fetch.
    • Contains "/" (e.g., "origin/develop") → split into remote and branch, fetch remote, target is remote/branch
    • Just "origin" → fetch origin, target is "origin/main"
    • Anything else → target is that branch name, no fetch
  3. If fetching, run: git fetch <remote>. If fetching or target resolution fails before the rebase begins, restore the stash created in step 1 before stopping.
  4. Run: git rebase <target>
  5. If conflicts occur, handle them carefully (see below)
  6. Continue until rebase is complete
  7. If step 1 created a stash, restore it with git stash pop --index:
    • Restore the stash only after the rebase succeeds.
    • If restoration conflicts, preserve the stash, report the conflicts, and leave the affected files for manual resolution.

Handling conflicts:

  • BEFORE resolving any conflict, understand what changes were made to each conflicting file in the target branch
  • For each conflicting file, run git log -p -n 3 <target> -- <file> to see recent changes to that file in the target branch
  • The goal is to preserve BOTH the changes from the target branch AND our branch's changes
  • After resolving each conflict, stage the file and continue with git rebase --continue
  • If a conflict is too complex or unclear, ask for guidance before proceeding

Comments

Markdown supported