zsh向けですが、だいたいどのシェルでも動くと思います。claude --worktreeを使っているときに便利だと思います。
W() {
local selected
selected=$(git worktree list --porcelain \
| awk '/^worktree /{path=$2; name=path; gsub(/.*\//, "", name); printf "%s\t%s\n", name, path}' \
| fzf --tmux --reverse \
--with-nth=1 --delimiter=$'\t' \
--preview 'git -C {2} log --oneline --graph -20' \
| cut -f2)
if [[ -n "$selected" ]]; then
cd "$selected"
fi
}