Display comprehensive worktree status including active worktrees, stale references, and uncommitted changes...
Display comprehensive status of all worktrees.
Run these commands to gather worktree status:
echo "=== Active Worktrees ===" && git worktree list
echo "=== Stale References ===" && git worktree prune --dry-run 2>&1 || echo "None found"
echo "=== Uncommitted Changes ===" && for wt in $(git worktree list --porcelain | grep "^worktree " | cut -d ' ' -f 2); do
changes=$(cd "$wt" && git status --porcelain 2>/dev/null | head -5)
if [ -n "$changes" ]; then
echo ""
echo "๐ $wt:"
echo "$changes"
count=$(cd "$wt" && git status --porcelain 2>/dev/null | wc -l | tr -d ' ')
if [ "$count" -gt 5 ]; then
echo " ... and $((count - 5)) more files"
fi
fi
done
echo ""
echo "Worktrees with no changes not shown."
echo "=== Locked Worktrees ===" && for wt in $(git worktree list --porcelain | grep "^worktree " | cut -d ' ' -f 2); do
if [ -f "$wt/../.git/worktrees/$(basename $wt)/locked" ] 2>/dev/null || git worktree list --porcelain | grep -A5 "^worktree $wt$" | grep -q "^locked"; then
echo "๐ $wt"
fi
done || echo "None"
/path/to/project abc1234 [main]
/path/to/project/.worktrees/feature def5678 [feature/auth]
If git worktree prune --dry-run shows output, you have stale entries:
Removing worktrees/old-feature: gitdir file points to non-existent location
Fix: Run git worktree prune to clean up.
Shows files with uncommitted changes in each worktree:
๐ /path/to/project/.worktrees/feature:
M src/auth/service.ts
?? src/auth/new-file.ts
Status codes:
M - ModifiedA - Added (staged)D - Deleted?? - UntrackedUU - Merge conflictRun all checks in one command:
echo "=== WORKTREE STATUS ===" && \
echo "" && \
echo "๐ Active Worktrees:" && \
git worktree list && \
echo "" && \
echo "๐งน Stale References:" && \
(git worktree prune --dry-run 2>&1 | grep -v "^$" || echo " None") && \
echo "" && \
echo "๐ Uncommitted Changes:" && \
for wt in $(git worktree list --porcelain | grep "^worktree " | cut -d ' ' -f 2); do
changes=$(cd "$wt" && git status --porcelain 2>/dev/null)
if [ -n "$changes" ]; then
echo " $wt: $(echo "$changes" | wc -l | tr -d ' ') files"
fi
done && \
echo "" && \
echo "Done."
Based on status output:
| Finding | Action |
|---|---|
| Stale references | Run git worktree prune |
| Uncommitted changes | Commit, stash, or discard |
| Old worktrees | Use /worktrees:finish to clean up |
| Locked worktrees | Unlock with git worktree unlock <path> if no longer needed |
/worktrees:new - Create a new worktree/worktrees:finish - Clean up completed worktree/worktrees:concepts - Reference documentation