$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

pecoで最近更新されたブランチにcheckoutする

昔、最近commitされたブランチをanythingライクに絞り込んでcheckoutする、というものをzawの時もpercolの時も実装していた。

最近はpecoを使うようになったので、ほぼコピペで再実装した。

設定方法

git-recent-branches.zshのようなファイルを用意し、peco-git-recent-branchesとpeco-git-recent-all-branchesを実装する。

function peco-git-recent-branches () {
    local selected_branch=$(git for-each-ref --format='%(refname)' --sort=-committerdate refs/heads | \
        perl -pne 's{^refs/heads/}{}' | \
        peco)
    if [ -n "$selected_branch" ]; then
        BUFFER="git checkout ${selected_branch}"
        zle accept-line
    fi
    zle clear-screen
}
zle -N peco-git-recent-branches

function peco-git-recent-all-branches () {
    local selected_branch=$(git for-each-ref --format='%(refname)' --sort=-committerdate refs/heads refs/remotes | \
        perl -pne 's{^refs/(heads|remotes)/}{}' | \
        peco)
    if [ -n "$selected_branch" ]; then
        BUFFER="git checkout -t ${selected_branch}"
        zle accept-line
    fi
    zle clear-screen
}
zle -N peco-git-recent-all-branches

.zshrc上で、keybindを設定する。

bindkey '^x^b' peco-git-recent-branches
bindkey '^xb' peco-git-recent-all-branches

これだけで使える。

デモ

こんなかんじで最近commitされた順でブランチが並び、pecoで更に絞り込んでcheckoutできる。使ってみないと良さはわからないけど、結構ライフチェンジング感あるのでおすすめ。
f:id:shiba_yu36:20140726150359g:plain

Tips

ちなみに昔書いたけど、更新した順でbranchのリストを取得するには、git for-each-refを使ったら出来る。他にもいろいろできそう。

ローカルブランチを更新した順に取得

git for-each-ref --format='%(refname:short)' --sort=-committerdate refs/heads

リモートブランチも一緒に取得

git for-each-ref --format='%(refname:short)' --sort=-committerdate refs/heads refs/remotes

まとめ

とにかく便利なのを何度も紹介したいので、pecoが出たタイミングでもう一度紹介しました。

壁登り続けてる

壁登り始めた - $shibayu36->blog;
一ヶ月ほど前に行き始めたボルダリングだけど、結局ずっと行き続けているし、完全にはまってる。

今ようやく一番初心者用のピンクが大体全部出来るようになって、最近はその次のステップの赤色をクリアしようと頑張ってる。赤色は今のところ5つくらい出来るようになった。

壁、どうやって上達するかが結構難しくて、本当に微妙な体重移動の差とか、ホールド力の差で登れたり登れなかったりする。ここ二日くらいでいきなり上達したんだけど、その前2週間くらいはずっとほとんど上達しなくて辛い期間が続いていた。僕の場合は掴む力が不足していたようで、そこを強化したのと、両足とも頑張って石に乗せようとしすぎてバランスを崩していたので、片足縛りにしたらそれが解消されて上達した。次の課題は指の本数縛りとか、手に力を入れながら力を抜くとかそういうのを意識していけると良さそう。既にこいつ何言ってんだ状態になってる。

結構はまってるので、もう良い物を揃えていこうと思って課金し始めた。とはいってもボルダリング、そんなに高い課金アイテムなくて、大したこと無い。月額会員15000、スポーツパンツ8000、靴17000、プロテイン5000、握力鍛えるやつ3000、靴下2000くらい。どうせ買うなら良いものを買って行きたいのでどんどん課金していきたい。

http://www.flickr.com/photos/86146954@N00/9242765268
photo by kikikiliii