Skip to main content

git-worktree-tidy

Fetch latest from origin, prune remote-tracking refs, delete stale local branches and worktrees, and fast-forward important branches. Use when tidying up a worktree-based repo layout.

Source facts

Repository
NeverSight/learn-skills.dev
Last source activity
August 6, 2026 at 03:19
Detected SKILL.md language
English
Stars
218
Forks
38

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
13 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
git-worktree-tidy
description
Fetch latest from origin, prune remote-tracking refs, delete stale local branches and worktrees, and fast-forward important branches. Use when tidying up a worktree-based repo layout.
metadata
{"short-description":"Worktree hygiene cleanup"}
# git-worktree-tidy Routine hygiene for bare-repo + worktree layouts. Fetches origin, prunes gone branches and orphaned worktrees, and fast-forwards important local branches. ## When to use User asks to "fetch prune", "clean up stale branches/worktrees", or "update main/dev to latest" in a worktree-based repo. ## Hard Rules - All destructive actions (worktree remove, branch delete) require user confirmation. Present the full list and wait. - Never force-delete a worktree with uncommitted changes without explicit approval. Flag dirty worktrees separately. - Use `--ff-only` when updating branches. If ff-only fails, stop and ask. - Operate from the `.bare` directory (or repo root) for branch/worktree management commands. ## Workflow ### 1) Locate the bare root Determine the bare repo directory: - If cwd contains `.bare/`, use it - Otherwise: `git rev-parse --git-common-dir` All branch and worktree management commands run from this directory. ### 2) Fetch + prune ```bash git fetch --prune origin ``` Report what was pruned (deleted remote-tracking branches, updated refs). ### 3) Discover stale branches ```bash git branch -vv | grep ': gone]' ``` Collect branch names whose upstream is gone. ### 4) Discover stale worktrees ```bash git worktree list git worktree prune --dry-run ``` Cross-reference worktrees against the gone-branch list. Check each stale worktree for dirty state: ```bash cd <worktree-path> && git status --short ``` Categorize: - **Clean + gone**: safe to remove - **Dirty + gone**: flag for user review - **Prunable metadata**: orphaned worktree entries (directory already gone) ### 5) Confirm deletions Present a summary table: ``` Stale worktrees to remove: <path> (<branch>) [clean] <path> (<branch>) [dirty — N uncommitted changes] Stale branches to delete: <branch> Prunable worktree metadata: <entry> ``` Wait for user confirmation before proceeding. ### 6) Remove stale worktrees For each confirmed worktree: ```bash git worktree remove <name> ``` If removal fails (dirty), report and skip unless user approved force. ### 7) Delete stale branches ```bash git branch -D <branch1> <branch2> ... ``` ### 8) Prune worktree metadata ```bash git worktree prune -v ``` ### 9) Update important branches Identify which branches have dedicated worktrees for `main`, `dev`, or other important branches (user may specify). For each: ```bash cd <worktree-path> && git pull --ff-only origin <branch> ``` If ff-only fails, report the divergence and ask for guidance. ### 10) Final status Show a summary: what was removed, what was updated, any items skipped.
View on GitHub