mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
37 lines
868 B
Plaintext
37 lines
868 B
Plaintext
# 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
|
|
}
|