ブランチ選択面倒ですよね
-
git branch
して、あるいはgit branch --remote
してブランチ一覧を確認 - ブランチ名をコピーして、remoteブランチだったら
remotes/origin/
などのプレフィックスを外して git checkout
そんなゴニョゴニョは peco
に任せましょう。
前提条件
-
peco
コマンドがインストールされていること -
tr
,grep
,sed
,xargs
などのunixでは標準的なコマンドが使える環境であること
alias
に設定するコマンド
[alias]
cop = !"git branch --all | tr -d '* ' | grep -v -e '->' | peco | sed -e 's+remotes/[^/]*/++g' | xargs git checkout"
コマンドの詳細
git branch --all
- remoteブランチも含めすべてのブランチを出力(ただし、
git fetch
していないなどでremoteブランチの情報が同期されていないと表示されません)
tr -d '* '
-
*
と
grep -v -e '->'
-
->
を含む行を削除します。remotes/origin/HEAD -> remotes/origin/master
などの行を除外するためです。
peco
- 入力された情報を使ってインクリメンタルサーチと選択を行います
sed -e 's+remotes/[^/]*/++g'
- 選択された行が
remotes/origin/feature/function
等の場合、remotes/origin/
の部分を削除して具体的なcheckout
用のブランチ名にします。 - 人によってはremotesの名前に
/
を含んだりするのかもしれないけど…一旦無視してます。
xargs git checkout
- 選択されたブランチ名を使ってチェックアウトを行います
cop = !"<command>"
- そもそもこの alias の書き方はなんぞ?と思う人もいるかと思いますが、単純にこれをシェルとして実行するという意味です。
alias設定しましょう
色々できるんで、よく使うコマンドがあるひとはぜひ。