ブランチ選択面倒ですよね
-
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設定しましょう
色々できるんで、よく使うコマンドがあるひとはぜひ。