| name | rebase-latest-main |
| description | Fetch latest origin/main and rebase it onto the current branch, resolving conflicts if necessary |
| targets | ["*"] |
Rebase Latest Main
Fetch the latest origin/main and rebase it onto the current working branch.
Step 1: Verify Current State
-
Check the current branch:
git branch --show-current
-
Ensure there are no uncommitted changes:
git status --porcelain
If there are uncommitted changes, either:
- Commit them first, or
- Ask the user how to proceed (commit, stash, or abort)
Step 2: Fetch Latest Changes
Fetch the latest changes from the remote:
git fetch origin main
Step 3: Rebase onto origin/main
Start the rebase:
git rebase origin/main
If rebase succeeds without conflicts:
Proceed to Step 5.
If conflicts occur:
-
Identify conflicting files:
git diff --name-only --diff-filter=U
-
For each conflicting file:
- Read the file content to understand the conflict
- Analyze both versions (HEAD and origin/main)
- Resolve the conflict by choosing the appropriate changes or merging them
- Stage the resolved file:
git add <resolved-file>
-
Continue the rebase:
git rebase --continue
-
Repeat until all conflicts are resolved and rebase is complete.
Step 4: Handle Rebase Failure
If unable to resolve conflicts automatically:
- Show the conflicting files and conflict markers to the user
- Ask for guidance on how to resolve
- If the user wants to abort:
git rebase --abort
Step 5: Push Changes
After successful rebase, force push to update the remote branch:
git push --force-with-lease
Note: --force-with-lease is safer than --force as it prevents overwriting others' work.
Step 6: Report Result
Summarize the operation:
- Number of commits rebased
- Any conflicts that were resolved
- Confirmation that the branch is now up-to-date with origin/main