# Create a new worktree and branch from within current git directory. ga() { if [[ -z "$1" ]]; then echo "Usage: ga [branch name]" return 1 fi local branch="$1" local base="$(basename "$PWD")" local wt_path="../${base}--${branch}" git worktree add -b "$branch" "$wt_path" mise trust "$wt_path" cd "$wt_path" } # Remove worktree and branch from within active worktree directory. gd() { if gum confirm "Remove worktree and branch?"; then local cwd base branch root worktree cwd="$(pwd)" worktree="$(basename "$cwd")" # split on first `--` root="${worktree%%--*}" branch="${worktree#*--}" # Protect against accidentally nuking a non-worktree directory if [[ "$root" != "$worktree" ]]; then cd "../$root" git worktree remove "$cwd" --force || return 1 git branch -D "$branch" fi fi }