git worktree list を少しだけ使いやすく
はじめに
みんな大好き git-worktree。中でも list は使用頻度の高いコマンドですが、リスト後に cd することが多いのでこのような関数を利用しています。
こんなの
zsh 用です。 .zshrc
あたりに書いておきます。関数名は gitw としてますが好きに変えてください。
function gitw { lines=( ${(@f)"$(git worktree list)"} ) for (( i=1; i<=$#lines; i+=1 )); do echo -n "$i: " echo $lines[$i] done echo -n "? " read n expr $n + 1 > /dev/null 2>&1 # numeric check if [[ $? -lt 2 && 1 -le $n && $n -le $#lines ]]; then; cd `echo $lines[$n] | awk '{ print $1 }'` fi }
使い方
git worktree list だと、
tagi@ubuntu-vm ~/tmux % git worktree list /home/tagi/tmux 68c2fc68 [master] /home/tagi/tmux.wt/3.0-rc 68c2fc68 [3.0-rc] /home/tagi/tmux.wt/develop 68c2fc68 [develop] tagi@ubuntu-vm ~/tmux %
こんな感じでリストするだけですが gitw だと、
tagi@ubuntu-vm ~/tmux % gitw 1: /home/tagi/tmux 68c2fc68 [master] 2: /home/tagi/tmux.wt/3.0-rc 68c2fc68 [3.0-rc] 3: /home/tagi/tmux.wt/develop 68c2fc68 [develop] ?
このように番号とともにリストします。移動したければ番号を入力して移動、移動したくなければそのまま Enter で抜けます。
tagi@ubuntu-vm ~/tmux % gitw 1: /home/tagi/tmux 68c2fc68 [master] 2: /home/tagi/tmux.wt/3.0-rc 68c2fc68 [3.0-rc] 3: /home/tagi/tmux.wt/develop 68c2fc68 [develop] ? 2 tagi@ubuntu-vm ~/tmux.wt/3.0-rc %
地味に便利かなと。