go-promptでGitのブランチをいい感じにチェックアウトするコマンドを作ってみた

先日Qiitaで以下の記事を見てこれでなにか作れないかなぁと思っていたのですが…

qiita.com

ふと思い立ってGitのブランチをチェックアウトするコマンドを作ってみました。

github.com

ブランチの一覧からチェックアウトしたいブランチをインクリメンタルサーチしてチェックアウトできるというもので、ローカルブランチの場合は普通にチェックアウト、リモートブランチの場合はローカルブランチを作成してチェックアウトしてくれます。

f:id:takezoe:20170828190434p:plain

一応目的のモノは作れたのですが、元々は以下のようなシェルスクリプトを使って、pecoを使ってチェックアウトするブランチを選択できるようにしたものを使っていたのですが、これと比べるとなんだか使いにくい気がする。

function peco-git-checkout() {
  local BRANCH=`git branch -a | peco`
  if [[ -z "$BRANCH" ]]; then
    return
  fi
  if [[ "$BRANCH" =~ remotes/([^/]*)/(.*) ]]; then
    git checkout -b ${BASH_REMATCH[2]} ${BASH_REMATCH[1]}/${BASH_REMATCH[2]}
  else
    git checkout $BRANCH
  fi
}

慣れの問題かもしれませんが…。うーん…。