florianbruniaux/claude-code-ultimate-guide/git-worktree-remove

Claude Code and agent skill by florianbruniaux/claude-code-ultimate-guide

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Safely remove a git worktree with branch cleanup and safety checks

Install

npx vskill@latest install florianbruniaux/claude-code-ultimate-guide/git-worktree-remove

SKILL.md

Git worktree remove

Safely remove a single git worktree with branch cleanup, merge verification, and database branch teardown.

Core principle: Safety checks first, then clean removal of worktree + branch + DB resources.

Part of: Worktree Lifecycle Suite | `/git-worktree` | `/git-worktree-status` | `/git-worktree-clean`

Process

  1. Validate Target: Identify worktree to remove
  2. Safety Check: Protect main/develop branches
  3. Check Merge Status: Warn if branch has unmerged changes
  4. Check Uncommitted Changes: Warn if worktree has dirty state
  5. Remove Worktree: git worktree remove
  6. Delete Local Branch: git branch -d (or -D with confirmation)
  7. Delete Remote Branch: git push origin --delete (with confirmation)
  8. Database Cleanup Reminder: Suggest DB branch deletion if applicable
  9. Prune References: git worktree prune

Safety checks

Protected branches
bash
# Never remove worktrees for these branches (configurable)
PROTECTED_BRANCHES="main master develop staging production"
if echo "$PROTECTED_BRANCHES" | grep -qw "$BRANCH"; then
echo "BLOCKED: Cannot remove worktree for protected branch '$BRANCH'"
echo "Protected branches: $PROTECTED_BRANCHES"
exit 1
fi
Uncommitted changes
bash
cd "$WORKTREE_PATH"
if [ -n "$(git status --porcelain)" ]; then
echo "WARNING: Worktree has uncommitted changes:"
git status --short
echo ""
echo "Options:"
echo " 1. Commit changes first"
echo " 2. Force remove (--force)"
echo " 3. Cancel"
# Wait for user decision
fi
Merge status
bash
# Check if branch is merged into main
MAIN_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')
if git merge-base --is-ancestor "$BRANCH" "$MAIN_BRANCH" 2>/dev/null; then
echo "Branch '$BRANCH' is merged into $MAIN_BRANCH. Safe to delete."
MERGED=true
else
echo "WARNING: Branch '$BRANCH' is NOT merged into $MAIN_BRANCH."
echo "You may lose work if you delete this branch."
MERGED=false
fi

Removal steps

bash
# 1. Remove the worktree
git worktree remove "$WORKTREE_PATH"
# If dirty state and user confirmed force:
# git worktree remove --force "$WORKTREE_PATH"
# 2. Delete local branch
if [ "$MERGED" = true ]; then
git branch -d "$BRANCH"
else
echo "Delete unmerged branch '$BRANCH'? (requires confirmation)"
# On confirmation:
git branch -D "$BRANCH"
fi
# 3. Delete remote branch (with confirmation)
if git ls-remote --heads origin "$BRANCH" | grep -q "$BRANCH"; then
echo "Delete remote branch 'origin/$BRANCH'?"
# On confirmation:
git push origin --delete "$BRANCH"
fi
# 4. Prune stale references
git worktree prune

Database branch cleanup

After worktree removal, remind about associated database branches:

bash
# Detect database provider (same logic as /git-worktree)
if [ -f ".env" ] && grep -q "neon" ".env"; then
echo ""
echo "DB Cleanup: neonctl branches delete $BRANCH_SLUG"
elif [ -f ".pscale.yml" ]; then
echo ""
DB_NAME=$(grep 'database:' .pscale.yml | awk '{print $2}')
echo "DB Cleanup: pscale branch delete $DB_NAME $BRANCH_SLUG"
elif [ -f ".env" ] && grep -q "postgresql" ".env"; then
echo ""
echo "DB Cleanup: psql \$DATABASE_URL -c \"DROP SCHEMA ${BRANCH_SLUG} CASCADE;\""
fi

Report format

Successful removal (merged branch):

Removed worktree: .worktrees/feat/auth
Worktree directory: deleted
Local branch feat/auth: deleted (was merged)
Remote branch origin/feat/auth: deleted
References: pruned
DB reminder: neonctl branches delete feat-auth

Removal with warnings (unmerged branch):

Removed worktree: .worktrees/feat/experimental
Worktree directory: deleted
Local branch feat/experimental: deleted (was NOT merged - forced)
Remote branch: no remote branch found
References: pruned
WARNING: Branch was not merged. Changes may be lost.
Last commit: a1b2c3d "WIP: experimental auth flow"

Flags

FlagEffect
--forceSkip uncommitted changes warning
--keep-branchRemove worktree but keep the branch
--keep-remoteDon't delete remote branch

Quick reference

SituationAction
Branch is mergedSafe delete (branch -d)
Branch is unmergedWarn + require confirmation (branch -D)
Uncommitted changesWarn + offer force/cancel
Protected branch (main/develop)Block removal
Remote branch existsAsk to delete remote
DB branch detectedRemind with exact command
Stale referencesAuto-prune

Common mistakes

Removing worktree for main/develop

  • Always blocked by safety check. Reconfigure protected branches if needed.

Deleting unmerged branch without checking

  • Always verify merge status. Unmerged branches require explicit --force or -D.

Forgetting database branch cleanup

  • Leaves orphaned DB branches consuming resources. Command reminds automatically.

Using `rm -rf` instead of `git worktree remove`

  • Leaves stale worktree references in .git/worktrees/. Always use git commands.

Usage

/git-worktree-remove feat/auth
/git-worktree-remove fix/login-bug --force
/git-worktree-remove refactor/db --keep-branch

Branch or worktree path: $ARGUMENTS

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
5,848
Repository forks
766
7-day trend score
43

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 30 Aug 2026, 2 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/florianbruniaux/claude-code-ultimate-guide/git-worktree-remove/badge)](https://verified-skill.com/skills/florianbruniaux/claude-code-ultimate-guide/git-worktree-remove)

Something wrong with this skill or its page? Tell us.