Git Advanced Workflows

by wshobson46891e7e60daNo licenseListed Oct 8, 2026Updated Oct 8, 2026

Master advanced Git workflows including rebasing, cherry-picking, bisect, worktrees, and reflog to maintain clean history and recover from any situation. Use when managing complex Git histories, collaborating on feature branches, or troubleshooting repository issues.

Instructions onlySoftware Development
AI-generated overview

Guides advanced Git workflows: interactive rebase, cherry-pick, bisect, worktrees, reflog and recovery.

What it does
This skill provides instructions and command examples for advanced Git operations, covering interactive rebase, cherry-picking, bisect, worktrees, and reflog. It also lists best practices, common pitfalls, and recovery commands for undoing rebases, merges, cherry-picks, and lost commits or branches. It produces guidance rather than files or scripts, with further patterns in a reference document.
When to use it
Use it when cleaning up commit history before merging, applying specific commits across branches, finding the commit that introduced a bug, working on several branches at once, or recovering from Git mistakes. It also suits preparing clean pull requests and synchronizing diverged branches.
Requirements
No scripts are included; it is instructions only. It assumes a working Git installation and a repository to operate on.

Git Advanced Workflows

Master advanced Git techniques to maintain clean history, collaborate effectively, and recover from any situation with confidence.

When to Use This Skill

  • Cleaning up commit history before merging
  • Applying specific commits across branches
  • Finding commits that introduced bugs
  • Working on multiple features simultaneously
  • Recovering from Git mistakes or lost commits
  • Managing complex branch workflows
  • Preparing clean PRs for review
  • Synchronizing diverged branches

Core Concepts

1. Interactive Rebase

Interactive rebase is the Swiss Army knife of Git history editing.

Common Operations:

  • pick: Keep commit as-is
  • reword: Change commit message
  • edit: Amend commit content
  • squash: Combine with previous commit
  • fixup: Like squash but discard message
  • drop: Remove commit entirely

Basic Usage:

bash
# Rebase last 5 commitsgit rebase -i HEAD~5
# Rebase all commits on current branchgit rebase -i $(git merge-base HEAD main)
# Rebase onto specific commitgit rebase -i abc123

2. Cherry-Picking

Apply specific commits from one branch to another without merging entire branches.

bash
# Cherry-pick single commitgit cherry-pick abc123
# Cherry-pick range of commits (exclusive start)git cherry-pick abc123..def456
# Cherry-pick without committing (stage changes only)git cherry-pick -n abc123
# Cherry-pick and edit commit messagegit cherry-pick -e abc123

3. Git Bisect

Binary search through commit history to find the commit that introduced a bug.

bash
# Start bisectgit bisect start
# Mark current commit as badgit bisect bad
# Mark known good commitgit bisect good v1.0.0
# Git will checkout middle commit - test it# Then mark as good or badgit bisect good  # or: git bisect bad
# Continue until bug found# When donegit bisect reset

Automated Bisect:

bash
# Use script to test automaticallygit bisect start HEAD v1.0.0git bisect run ./test.sh
# test.sh should exit 0 for good, 1-127 (except 125) for bad

4. Worktrees

Work on multiple branches simultaneously without stashing or switching.

bash
# List existing worktreesgit worktree list
# Add new worktree for feature branchgit worktree add ../project-feature feature/new-feature
# Add worktree and create new branchgit worktree add -b bugfix/urgent ../project-hotfix main
# Remove worktreegit worktree remove ../project-feature
# Prune stale worktreesgit worktree prune

5. Reflog

Your safety net - tracks all ref movements, even deleted commits.

bash
# View refloggit reflog
# View reflog for specific branchgit reflog show feature/branch
# Restore deleted commitgit reflog# Find commit hashgit checkout abc123git branch recovered-branch
# Restore deleted branchgit refloggit branch deleted-branch abc123

Detailed patterns and worked examples

Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.

Best Practices

  1. Always Use --force-with-lease: Safer than --force, prevents overwriting others' work
  2. Rebase Only Local Commits: Don't rebase commits that have been pushed and shared
  3. Descriptive Commit Messages: Future you will thank present you
  4. Atomic Commits: Each commit should be a single logical change
  5. Test Before Force Push: Ensure history rewrite didn't break anything
  6. Keep Reflog Aware: Remember reflog is your safety net for 90 days
  7. Branch Before Risky Operations: Create backup branch before complex rebases
bash
# Safe force pushgit push --force-with-lease origin feature/branch
# Create backup before risky operationgit branch backup-branchgit rebase -i main# If something goes wronggit reset --hard backup-branch

Common Pitfalls

  • Rebasing Public Branches: Causes history conflicts for collaborators
  • Force Pushing Without Lease: Can overwrite teammate's work
  • Losing Work in Rebase: Resolve conflicts carefully, test after rebase
  • Forgetting Worktree Cleanup: Orphaned worktrees consume disk space
  • Not Backing Up Before Experiment: Always create safety branch
  • Bisect on Dirty Working Directory: Commit or stash before bisecting

Recovery Commands

bash
# Abort operations in progressgit rebase --abortgit merge --abortgit cherry-pick --abortgit bisect reset
# Restore file to version from specific commitgit restore --source=abc123 path/to/file
# Undo last commit but keep changesgit reset --soft HEAD^
# Undo last commit and discard changesgit reset --hard HEAD^
# Recover deleted branch (within 90 days)git refloggit branch recovered-branch abc123

Source and attribution

Source:wshobson/agentsinplugins/developer-essentials/skills/git-advanced-workflowsat commit46891e7

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal

Git Advanced Workflows Agent Skill | SourceWeft