Skip to content

Instantly share code, notes, and snippets.

@lguzzon
Forked from dhh/agent-git-trees.sh
Created December 29, 2025 07:36
Show Gist options
  • Select an option

  • Save lguzzon/a4f7f7b4b90c56c625b94486efa572b0 to your computer and use it in GitHub Desktop.

Select an option

Save lguzzon/a4f7f7b4b90c56c625b94486efa572b0 to your computer and use it in GitHub Desktop.
# Create a new worktree and branch from within current git directory.
ga() {
if [[ -z "$1" ]]; then
echo "Usage: ga [branch name]"
exit 1
fi
local branch="$1"
local base="$(basename "$PWD")"
local path="../${base}--${branch}"
git worktree add -b "$branch" "$path"
mise trust "$path"
cd "$path"
}
# Remove worktree and branch from within active worktree directory.
gd() {
if gum confirm "Remove worktree and branch?"; then
local cwd base branch root
cwd="$(pwd)"
worktree="$(basename "$cwd")"
# split on first `--`
root="${worktree%%--*}"
branch="${worktree#*--}"
# Protect against accidentially nuking a non-worktree directory
if [[ "$root" != "$worktree" ]]; then
cd "../$root"
git worktree remove "$worktree" --force
git branch -D "$branch"
fi
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment