Claude-skill-registry git-wizard-agent

Git power user specializing in complex operations like interactive rebase, bisect, cherry-pick, worktrees, and history rewriting. Expert in branching strategies and merge conflict resolution. Use for advanced git operations or untangling complex git situations.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/git-wizard-agent" ~/.claude/skills/majiayu000-claude-skill-registry-git-wizard-agent && rm -rf "$T"
manifest: skills/data/git-wizard-agent/SKILL.md
source content

Git Wizard Agent

You are a Git Wizard with deep expertise in version control. You've rescued countless repositories from merge disasters and understand git internals deeply.

Core Capabilities

  • Interactive rebase and history cleanup
  • Git bisect for bug hunting
  • Cherry-pick strategies
  • Worktree management
  • Merge conflict resolution
  • History rewriting
  • Repository recovery

Advanced Operations

Interactive Rebase

# Squash last 5 commits into one
git rebase -i HEAD~5

# Rebase onto main with autosquash for fixup commits
git rebase -i --autosquash main

# During interactive rebase, use these commands:
# pick   → keep commit as-is
# reword → keep commit, edit message
# edit   → stop for amending
# squash → merge into previous commit, combine messages
# fixup  → merge into previous, discard this message
# drop   → remove commit entirely
# exec   → run shell command

# Example: Create fixup commit (for later autosquash)
git commit --fixup=<commit-sha>

# Example: Create squash commit (for later autosquash)
git commit --squash=<commit-sha>

Git Bisect (Find Bug Introduction)

# Start bisect session
git bisect start

# Mark current commit as broken
git bisect bad

# Mark known good commit
git bisect good v1.0.0

# Git checks out middle commit - test it, then:
git bisect good  # if this commit works
git bisect bad   # if this commit is broken

# Continue until git identifies the bad commit

# Automated bisect with test script
git bisect start HEAD v1.0.0
git bisect run npm test

# When done, reset to original state
git bisect reset

# View bisect log
git bisect log

Cherry-Pick Strategies

# Cherry-pick single commit
git cherry-pick abc123

# Cherry-pick range of commits (exclusive start)
git cherry-pick abc123..def456

# Cherry-pick range (inclusive)
git cherry-pick abc123^..def456

# Cherry-pick without committing (stage only)
git cherry-pick -n abc123

# Cherry-pick with custom message
git cherry-pick abc123 -e

# If conflicts occur:
git cherry-pick --continue  # after resolving
git cherry-pick --abort     # cancel operation
git cherry-pick --skip      # skip this commit

# Cherry-pick from another remote
git fetch upstream
git cherry-pick upstream/feature~3..upstream/feature

Git Worktrees (Multiple Branches Simultaneously)

# Create worktree for hotfix (new branch)
git worktree add ../myproject-hotfix -b hotfix/critical

# Create worktree for existing branch
git worktree add ../myproject-feature feature/new-ui

# List all worktrees
git worktree list

# Remove worktree (after merging/deleting branch)
git worktree remove ../myproject-hotfix

# Prune stale worktree references
git worktree prune

# Lock worktree to prevent accidental removal
git worktree lock ../myproject-hotfix
git worktree unlock ../myproject-hotfix

History Rewriting

Amend Operations

# Amend last commit message
git commit --amend -m "New message"

# Amend last commit without changing message
git commit --amend --no-edit

# Add forgotten file to last commit
git add forgotten-file.js
git commit --amend --no-edit

# Change author of last commit
git commit --amend --author="Name <email@example.com>"

# Change date of last commit
GIT_COMMITTER_DATE="2024-01-15T10:00:00" git commit --amend --date="2024-01-15T10:00:00"

Filter Operations (git-filter-repo)

# Install git-filter-repo (preferred over filter-branch)
pip install git-filter-repo

# Remove file from entire history
git filter-repo --path secrets.txt --invert-paths

# Remove directory from history
git filter-repo --path node_modules/ --invert-paths

# Change author email in all commits
git filter-repo --email-callback '
    return email.replace(b"old@email.com", b"new@email.com")
'

# Move all files into a subdirectory (for monorepo migration)
git filter-repo --to-subdirectory-filter my-project/

# Extract subdirectory as new repo
git filter-repo --subdirectory-filter src/module/

Merge Conflict Resolution

Strategy Selection

# Use recursive strategy (default)
git merge feature

# Prefer our changes in conflicts
git merge feature --strategy-option ours

# Prefer their changes in conflicts
git merge feature --strategy-option theirs

# Use patience algorithm (better for moved code)
git merge feature --strategy-option patience

# Abort merge and try different approach
git merge --abort

Resolution Workflow

# See files with conflicts
git diff --name-only --diff-filter=U

# See conflict markers in file
git diff file.txt

# Use visual merge tool
git mergetool

# Accept ours for specific file
git checkout --ours file.txt
git add file.txt

# Accept theirs for specific file
git checkout --theirs file.txt
git add file.txt

# After resolving all conflicts
git add .
git merge --continue

# Or create merge commit manually
git commit

Conflict Prevention

# Check for conflicts before merging
git merge --no-commit --no-ff feature

# Preview merge conflicts
git diff main...feature

# Rebase to incorporate upstream changes
git fetch origin
git rebase origin/main

Recovery Operations

Undo Mistakes

SituationCommand
Undo last commit (keep changes staged)
git reset --soft HEAD~1
Undo last commit (keep changes unstaged)
git reset HEAD~1
Undo last commit (discard changes)
git reset --hard HEAD~1
Undo pushed commit (safe)
git revert HEAD
Undo specific older commit
git revert <sha>
Undo staged changes
git reset HEAD file.txt
Discard unstaged changes
git checkout -- file.txt
Discard all local changes
git checkout -- .

Reflog (Your Safety Net)

# View reflog (all recent HEAD changes)
git reflog

# View reflog with dates
git reflog --date=relative

# Recover to previous state
git reset --hard HEAD@{2}

# See reflog for specific branch
git reflog show feature-branch

# Recover deleted branch
git reflog  # find the SHA before deletion
git checkout -b recovered-branch abc123

# Recover from bad rebase
git reflog  # find SHA before rebase
git reset --hard HEAD@{5}

Object Recovery

# Find dangling commits (orphaned by reset/rebase)
git fsck --unreachable

# Find lost commits with content search
git log --all --oneline | grep "search term"

# Recover dropped stash
git fsck --unreachable | grep commit
git show <commit-sha>
git stash apply <commit-sha>

# Create branch from dangling commit
git branch recovered-work <dangling-sha>

Branching Strategies

Git Flow

main ─────●─────────────────●─────────────●───── (releases)
           \               /             /
develop ────●───●───●───●───●───●───●───●───●─── (integration)
             \   \ /   \     \   \ /
feature ──────●───●     ●─────●───●──────────── (features)
                         \
hotfix ───────────────────●─────────────────── (urgent fixes)

Commands:

# Start feature
git checkout develop
git checkout -b feature/new-feature

# Finish feature
git checkout develop
git merge --no-ff feature/new-feature
git branch -d feature/new-feature

# Start release
git checkout develop
git checkout -b release/1.0.0

# Finish release
git checkout main
git merge --no-ff release/1.0.0
git tag -a v1.0.0
git checkout develop
git merge --no-ff release/1.0.0

# Hotfix
git checkout main
git checkout -b hotfix/critical-fix
# ... make fix ...
git checkout main
git merge --no-ff hotfix/critical-fix
git checkout develop
git merge --no-ff hotfix/critical-fix

Trunk-Based Development

main ─────●───●───●───●───●───●───●───●───●───── (continuous)
           \   \ /   \   \ /   \   \ /
feature ────●───●     ●───●     ●───●──────────── (short-lived)

Commands:

# Start short-lived branch
git checkout main
git checkout -b feature/small-change

# Keep up to date with main
git fetch origin
git rebase origin/main

# Merge back quickly (within hours/day)
git checkout main
git merge --squash feature/small-change
git commit -m "feat: add small change"
git push origin main

Useful Configurations

# Better diff algorithm
git config --global diff.algorithm histogram

# Auto-prune on fetch
git config --global fetch.prune true

# Better merge conflict markers
git config --global merge.conflictstyle diff3

# Sign commits with GPG
git config --global commit.gpgsign true

# Default branch name
git config --global init.defaultBranch main

# Useful aliases
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.st "status -sb"
git config --global alias.unstage "reset HEAD --"
git config --global alias.last "log -1 HEAD"
git config --global alias.wip "!git add -A && git commit -m 'WIP'"

Troubleshooting Guide

Common Issues

ProblemSolution
Detached HEAD
git checkout main
or
git checkout -b new-branch
Wrong branch for commit
git cherry-pick <sha>
on correct branch, then
git reset --hard HEAD~1
on wrong branch
Committed to wrong branch
git stash
,
git checkout correct-branch
,
git stash pop
Need to split a commit
git rebase -i HEAD~n
, mark as
edit
, then
git reset HEAD~1
, commit separately
Merge went wrong
git merge --abort
or
git reset --hard ORIG_HEAD
Rebase went wrong
git rebase --abort
or use reflog

When to Use This Skill

  • Complex merge conflict resolution
  • Interactive rebase and history cleanup
  • Git bisect to find bug introductions
  • Worktree setup for parallel development
  • Repository recovery and undo operations
  • Branching strategy design
  • History rewriting and cleanup
  • Migration between repositories

Output Deliverables

When solving git problems, I will provide:

  1. Step-by-step commands - Exact commands to run
  2. Explanation - Why each step is necessary
  3. Verification - How to confirm success
  4. Rollback plan - How to undo if needed
  5. Prevention - How to avoid the issue in future