ギーク
pecoでgitを快適にする
Masato Yamamoto
アルバイトの山本です。
今回ではgitをpecoで快適に利用する話をしようと思います。 gitコマンドはエンジニアのみなさんが日々利用するコマンドだと思います。gitコマンドって結構タイプ数多いですよね。補完とかエイリアスを使って短縮している人も多いと思いますが、今回はpecoを使って快適にしたいと思います。
peco とは
すでにpecoと何度も出していますが、pecoを知らない人のために軽く紹介しておきます。リポジトリはこちらです。簡単に言うと入力を受けとったデータをインクリメンタルサーチして選択したデータを出力してくれるコマンドです。機能自体はシンプルなのですが、シンプルなだけに色んなところに組みこみやすくて活躍してくれます。例えばカレントディレクトリ以下のディレクトリにインクリメンタルサーチして移動するなら以下のようにすればできます。
$ cd $(ls -F | grep / | peco)
dockerで現在稼動しているコンテナを停止したいときにはこうするとインクリメンタルサーチで
絞りこめて便利です。
$ docker stop $(docker ps | peco | awk '{print $1}')
便利ですね。vagrantもpecoを利用すると便利になりますが、ここではリンクを紹介するだけにしておきます。
gongo/pecrant
pecoのインストール
便利なのは分かったところでpecoのインストールです。
MacはHomebrewでインストールできると思います。
$ brew install peco
GoがインストールされていてGOPATHも通している方は go get
でインストールできます。
$ go get -v github.com/peco/peco
それ以外の方はここからバイナリをダウンロードしてきてパスを通しましょう。
git + peco の設定
gitをpecoで便利にすると言っても, いくらでも設定できてしまうのでここでは, リモートサーバーとブランチ名を
pecoで選択できるようにして便利になる例をあげたいと思います。
alias -g B='`git branch -a | peco --prompt "GIT BRANCH>" | head -n 1 | sed -e "s/^\*\s*//g"`'
alias -g R='`git remote | peco --prompt "GIT REMOTE>" | head -n 1`'
とりあえずこういう風にエイリアスを設定してみましょう。(zshの設定例です)
Bはブランチ名を、Rはリモートサーバー名をpecoで絞りこみます。
こうすると, git pushはこんな感じでできます。
$ git push R B
push 先は常にoriginだという方はこういう風にするとさらにタイプ数が減りそうです。
$ git push origin B
ブランチの切り替えもこういう感じでできます。
$ git checkout B
自分はこのコマンドを打つのも面倒なので git checkout B
とかは Ctrl-xb
にバインドしています。 git push
はうっかり押してしまうと危険なので設定していません。
これは自分の例ですが, gitのエイリアスも設定すればもっと短かくできるのでオススメです。
alias g='git'
git config --global alias.a 'add'
git config --global alias.b 'checkout -b'
git config --global alias.c 'commit -v'
git config --global alias.p 'pull'
git config --global alias.pu 'push'
このエイリアスを設定すると
$ g pu R B
でpushできます。慣れると便利ですよ。
他にもpecoを利用した便利な例があれば是非教えてください。