最近.gitconfig
や .zshrc
をお掃除していて、自分で以前組んでいて便利そうだと思っていたエイリアスを更によくしてみたのでそれを晒してみます。
晒す内容はタイトルの通りです。
スマートにリモートブランチを追跡しつつチェックアウト
Gitでリモートブランチを追跡しつつチェックアウトするときは、
$ git checkout -b [branch_name] [remote]/[branch_name]
と、 checkout -b
を使うよりも、
$ git checkout -t [remote]/[branch_name]
の方がスマートに、リモートを追跡しつつチェックアウトが可能です。
[remote]
がorigin
、[branch_name]
がfeature/hoge
なら、
$ git checkout -t origin/feature/hoge
で出来ます。
本題: エイリアスを張る
ただ、これ毎回書くのがだるいので、こんな感じでエイリアスを張ります。
# .gitconfigに以下を追加
cot = "!f() { git checkout -t $1/$2; }; f"
# 必要に応じて `.zshrc`等に書く
alias g=git
そうすると、
$ g cot origin feature/hoge
のように、git push origin master
みたいな感覚で使うことができるようになります。
ここで満足してはいけない、、ちょっとタイピングする文字減っただけなので便利になったとは言いづらい…。
そこで、以前紹介したfzfを用いて、リモートのブランチ一覧から選択してそれを追跡しつつ、チェックアウトしてみます
高みへ: fzfと組み合わせる
fzf()あるいはpeco)を準備したら、 .zshrc
等に以下のようなグローバルエイリアスを定義します
alias -g RB='`git branch -r | fzf --prompt "Remote Branches>" | head -n 1 | sed -e "s/^\*\s*//g"`'
また、前回定義したgitのエイリアスcot
を次のように書き換えます
cot = checkout -t
これで準備が整いました。
使ってみる
# 必要があればfetchする
$ g fetch
# cotとRBを組み合わせる
$ g cot RB
これでfzfで選択しつつ、リモートブランチを追跡しつつチェックアウトすることができます。
タイピングがわずか8文字(スペース含め)。
やっぱりfzfはすげえや。