Loading...
Loading...
Use git worktrees for parallel Claude Code workflows. Run multiple Claude instances on different features simultaneously without merge conflicts. Use for parallel development, multi-branch testing, and subagent workflows.
npx skill4agent add vamseeachanta/workspace-hub git-worktree-workflowVersion: 1.1.0 Created: 2025-12-30 Last Updated: 2026-01-02 Category: Development
# 1. Create worktree for new feature branch
git worktree add -b feature-api ../project-api main
# 2. Run Claude in worktree
cd ../project-api && claude "Implement the feature"
# 3. After completion, merge and cleanup
cd ../project
git merge feature-api
git worktree remove ../project-api
git branch -d feature-apiMain repo: /project (on main branch)
Worktree 1: /project-feature-a (on feature-a branch)
Worktree 2: /project-feature-b (on feature-b branch)
Worktree 3: /project-hotfix (on hotfix branch).git# Create worktree for existing branch
git worktree add ../project-feature feature-branch
# Create worktree with new branch
git worktree add -b new-feature ../project-new-feature main
# Create worktree for detached HEAD (testing)
git worktree add --detach ../project-test HEADgit worktree list
# Output:
# /project abc1234 [main]
# /project-feature def5678 [feature-a]
# /project-hotfix ghi9012 [hotfix-123]# Remove after merging
git worktree remove ../project-feature
# Force remove (discards changes)
git worktree remove --force ../project-abandoned
# Prune stale worktrees
git worktree prune# Terminal 1: Development Claude
cd /project-feature
claude "Implement the new authentication module"
# Terminal 2: Review Claude
cd /project
claude "Review the authentication changes in feature-auth branch"# Setup worktrees
git worktree add -b feature-api ../project-api main
git worktree add -b feature-ui ../project-ui main
git worktree add -b feature-tests ../project-tests main
# Run Claude in each (separate terminals)
cd ../project-api && claude "Build REST API endpoints"
cd ../project-ui && claude "Create React components"
cd ../project-tests && claude "Write integration tests"# Main Claude working in /project
# Creates verification worktree:
git worktree add --detach ../project-verify HEAD
# Spawns subagent to verify:
cd ../project-verify && claude -p "Verify the implementation works correctly"# Create two worktrees from same point
git worktree add -b approach-a ../project-a main
git worktree add -b approach-b ../project-b main
# Different Claude instances try different solutions
cd ../project-a && claude "Implement caching using Redis"
cd ../project-b && claude "Implement caching using Memcached"
# Compare results
diff -r ../project-a/src ../project-b/src<project>-<purpose># Pattern: <project>-<purpose>
../project-feature-auth # Feature work
../project-hotfix-123 # Bug fix
../project-review # Code review
../project-test # Testing
../project-experiment # Experiments/workspace/
├── project/ # Main development
├── project-feature-a/ # Active features
├── project-feature-b/
├── project-review/ # Review worktree
└── project-archive/ # Completed features (before cleanup)#!/bin/bash
# cleanup-worktrees.sh
# Remove merged branches
git branch --merged main | grep -v main | while read branch; do
worktree=$(git worktree list | grep "$branch" | awk '{print $1}')
if [ -n "$worktree" ]; then
echo "Removing worktree: $worktree"
git worktree remove "$worktree"
fi
done
# Prune stale references
git worktree prune## Worktree Workflow
When running parallel tasks:
1. Create worktree: `git worktree add -b <branch> ../<project>-<purpose> main`
2. Work in isolated directory
3. Commit changes normally
4. Return to main and merge
5. Remove worktree: `git worktree remove ../<worktree>`# Automate worktree operations
WORKTREE="../project-auto-$(date +%s)"
git worktree add -b auto-task "$WORKTREE" main
cd "$WORKTREE"
claude -p "Complete the task in task.md" --output result.md
# Collect results
cp result.md ../results/
git worktree remove "$WORKTREE"| Error | Cause | Solution |
|---|---|---|
| Branch already checked out | Branch exists in another worktree | Remove existing worktree or use different branch |
| Cannot remove worktree | Uncommitted changes present | Commit, stash, or force remove |
| Permission errors | Directory not writable | |
| Stale worktree references | Worktree directory deleted manually | Run |
| Lock file exists | Previous operation interrupted | Remove |
| Path already exists | Directory exists at target path | Choose different path or remove existing directory |
jobs:
parallel-claude:
strategy:
matrix:
task: [lint, test, security]
steps:
- uses: actions/checkout@v4
- name: Create worktree
run: |
git worktree add -b ${{ matrix.task }} ../work-${{ matrix.task }}
- name: Run Claude task
run: |
cd ../work-${{ matrix.task }}
claude -p "Run ${{ matrix.task }} analysis"| Step | Command | Verification |
|---|---|---|
| Create worktree | | |
| Navigate to worktree | | |
| Run Claude task | | Task completes successfully |
| Commit changes | | |
| Return to main | | |
| Merge changes | | |
| Remove worktree | | |
| Delete branch | | |
| Prune stale | | No stale references remain |
| Metric | Target | Description |
|---|---|---|
| Worktree Creation Time | <5s | Time to create new worktree |
| Parallel Efficiency | >80% | CPU utilization across worktrees |
| Cleanup Rate | 100% | Worktrees removed after merge |
| Branch Isolation | 100% | No cross-worktree conflicts |
| Merge Success Rate | >95% | Clean merges without conflicts |