Skip to content
This repository was archived by the owner on Feb 24, 2026. It is now read-only.
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions template/justfile
Original file line number Diff line number Diff line change
Expand Up @@ -49,43 +49,43 @@ wt-rm target:
#!/bin/bash
set -euo pipefail

BRANCH="$(basename "{{ target }}")"
TARGET="{{ target }}"

if [ "$BRANCH" = "main" ]; then
if [ "$TARGET" = "main" ]; then
echo "Error: refusing to remove the main worktree." >&2
exit 1
fi

git worktree remove "$BRANCH"
git worktree remove "$TARGET"

if ! git branch -d "$BRANCH" 2>/dev/null; then
echo "Worktree removed but branch '$BRANCH' has unmerged changes."
echo " To delete it anyway: git branch -D $BRANCH"
if ! git branch -d "$TARGET" 2>/dev/null; then
echo "Worktree removed but branch '$TARGET' has unmerged changes."
echo " To delete it anyway: git branch -D $TARGET"
else
echo "Removed worktree and branch '$BRANCH'"
echo "Removed worktree and branch '$TARGET'"
fi

# Remove a worktree and delete its local and remote branches (accepts branch name or folder path)
wt-destroy target:
#!/bin/bash
set -euo pipefail

BRANCH="$(basename "{{ target }}")"
TARGET="{{ target }}"

if [ "$BRANCH" = "main" ]; then
if [ "$TARGET" = "main" ]; then
echo "Error: refusing to destroy the main worktree." >&2
exit 1
fi

git worktree remove "$BRANCH"
git worktree remove "$TARGET" --force

git branch -D "$BRANCH"
git branch -D "$TARGET"

if git remote | grep -q . && git ls-remote --exit-code --heads origin "$BRANCH" >/dev/null 2>&1; then
git push origin --delete "$BRANCH"
echo "Removed worktree, local branch, and remote branch '$BRANCH'"
if git remote | grep -q . && git ls-remote --exit-code --heads origin "$TARGET" >/dev/null 2>&1; then
git push origin --delete "$TARGET"
echo "Removed worktree, local branch, and remote branch '$TARGET'"
else
echo "Removed worktree and local branch '$BRANCH' (no remote branch found)"
echo "Removed worktree and local branch '$TARGET' (no remote branch found)"
fi

# List all active git worktrees
Expand Down