rebase
Rebase the current branch with smart conflict resolution.
Works with
---
name: rebase
description: Rebase the current branch with smart conflict resolution.
license: MIT
---
<!-- Customize conflict resolution strategy to match your preferences. -->
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 proceedingMore Git Workflows skills
git-commit
github/awesome-copilot
Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type/scope/description overrides, (4) Intelligent file staging for logical grouping
git-workflow-and-versioning
addyosmani/agent-skills
Structures git workflow practices. Use when making any code change. Use when committing, branching, resolving conflicts, or when you need to organize work across multiple parallel streams. Use when cutting a release, choosing a semantic version bump, tagging, or writing a changelog.
resolve-merge-conflicts
warpdotdev/common-skills
Resolve Git merge conflicts by extracting only unresolved paths, conflict hunks, and compact diffs instead of loading whole files into context. Use when a merge, rebase, cherry-pick, or stash pop stops on conflicts, when `git status` shows unmerged paths, or when files contain conflict markers.

