From git-workflow
Syncs git-branchless commit stacks with main branch: fetches remote changes, rebases commits, resolves conflicts, and cleans up after PR merges. Use to keep stacks current or post-PR.
npx claudepluginhub jpoutrin/product-forge --plugin git-workflowThis skill uses the workspace's default tool permissions.
**Category:** Git Workflow
Provides Git-branchless stacked diffs workflow patterns, command references for detached HEAD, smartlog, committing, editing, restacking, syncing, and PR submission.
Enforces idiomatic git-branchless workflows: detached-HEAD work, git move for stack edits/rebases, git undo for recovery, git sync for base updates. For multi-commit tasks, history rewrites, or recovery.
Provides advanced Git rebase patterns for linear history, stacked PRs, commit cleanup, and converting merge-heavy branches using --reapply-cherry-picks, --onto, and interactive workflows.
Share bugs, ideas, or general feedback.
Category: Git Workflow
Sync your commit stack with the main branch. Fetches remote changes, rebases your stack, and handles post-merge cleanup.
/bl-sync [options]
| Option | Description |
|---|---|
| (none) | Sync with local main branch |
--pull | Fetch remote + sync with updated main |
--after-merge | Clean up after a PR was merged |
# Sync with local main
/bl-sync
# Fetch and sync (most common)
/bl-sync --pull
# After your PR was merged on GitHub
/bl-sync --after-merge
This command delegates to the bl-sync-expert agent:
Task(subagent_type="git-workflow:bl-sync-expert",
prompt="Execute sync: <options>")
Verify Prerequisites
Show Current State
git sl to display the stackExecute Sync
git syncgit sync --pullgit pull origin main then git moveHandle Conflicts
git rebase --continueRemind About PRs
git submit to update PRsConfirm Result
git slUser: /bl-sync --pull
Agent: Fetching and syncing with main...
Fetching from origin...
remote: Counting objects: 5, done.
Current stack:
◆ old-main (main) old commit
┃
◯ abc123 feat: add User class
┃
● def456 feat: add validation
Syncing onto updated main...
[1/2] feat: add User class - ✓
[2/2] feat: add validation - ✓
◆ new-main (main) teammate's feature ← Updated
┃
◯ xyz789 feat: add User class
┃
● uvw012 feat: add validation
Stack synced! 2 commits rebased onto updated main.
Note: Run `git submit` to update your PRs.
User: /bl-sync --after-merge
Agent: Cleaning up after PR merge...
Pulling latest main...
Already up to date with merge commit.
Current state:
◆ merge123 (main) Merge pull request #1
┃
✕ old-abc feat: add User class (merged)
┃
◯ def456 feat: add validation ← Needs moving
┃
● ghi789 feat: add repository
Moving remaining commits onto merge...
git move -s def456 -d merge123
◆ merge123 (main) Merge pull request #1
┃
◯ new-def feat: add validation ← Moved
┃
● new-ghi feat: add repository
Cleanup complete!
Next steps:
1. Recreate branch: git switch -c pr/validation
2. Push to remote: git submit -c @
3. Update PR base branch on GitHub
User: /bl-sync --pull
(with conflicts)
Agent: Fetching and syncing with main...
Syncing onto updated main...
[1/2] feat: add User class - ✓
[2/2] feat: add validation - CONFLICT
Conflict in: src/validation.py
<<<<<<< HEAD
def validate_email(email):
# teammate's version
=======
def validate_email(email):
# your version
>>>>>>> feat: add validation
To resolve:
1. Edit src/validation.py - choose correct version
2. git add src/validation.py
3. git rebase --continue
Or to abort: git rebase --abort
| Error | Resolution |
|---|---|
| Dirty working directory | Prompt to commit or stash |
| No remote configured | Suggest git remote add origin <url> |
| Conflicts during sync | Guide through resolution |
| Lost commits | Use git undo -i to recover |