peco と alias -g で git に便利革命おきた


pecoalias -ggit に便利革命がおきるので、ぜひご活用ください。

記事の一番下に設定のまとめがあります。

目録

めんどいコマンド1: git commit

Before

$ git commit

After

$ g c

便利革命する設定例

  1. .zshrc に追記
alias g='git'
  1. git を設定
$ git config --global alias.c 'commit -v'

ポイント

  • エイリアス
  • git エイリアス
  • 短縮しつつも思い出しやすさを保つ

めんどいコマンド2: git checkout

Before

$ git checkout feature/something-great

After

$ g o B

チェックアウトしたいブランチの一覧が peco に表示されるので、選択してチェックアウトできます。
なお、現在の branch を選択したい場合は * を入力すると一発で絞り込めます。

tig でも同様の動作が可能ですが、tig branch とできないのが惜しいところです。

便利革命する設定例

  1. peco をインストール
$ brew tap peco/peco
$ brew install peco
  1. git を設定
$ git config --global alias.o checkout
  1. .zshrc に追記
alias -g B='`git branch -a | peco --prompt "GIT BRANCH>" | head -n 1 | sed -e "s/^\*\s*//g"`'   

ポイント

  • グローバルエイリアス
  • peco
  • 大文字一字をグローバルエイリアスに割当てて、わかりやすさを保ちつつ誤爆を防止

zsh にはグローバルエイリアスという機能があり、コマンドの引数などでエイリアスを展開することができます。
たとえば、こんなこともできます:

$ alias -g IS_GOD='`echo path/to/file`'
$ vim IS_GOD
    # vim path/to/file と等価

めんどいコマンド3: git push/pull

Before

$ git pull
$ git push
$ git push -u origin feature/something-great

After

$ g p
$ g pu
$ g puu R B

便利革命する設定例

  1. git を設定
$ git config --global alias.p 'pull'
$ git config --global alias.pu 'push'
$ git config --global alias.puu 'push -u'
  1. .zshrc に追記
alias -g R='`git remote | peco --prompt "GIT REMOTE>" | head -n 1`'

ポイント

  • remote も peco しちゃう
  • 短縮系には派閥がある
  • 私は: pull/push/push -up/pu/puu

めんどいコマンド4: git remote add

Before

$ git remote add origin [email protected]/my/repo

After

$ g r add origin H

自分の Github アカウントのリポジトリの一覧から選択できます。

便利革命する設定例

  1. jq をインストール
$ brew install jq
  1. git を設定
$ git config --global alias.r 'remote'
  1. .zshrc に追記

YOUR_USERNAME を自分の github アカウントに書き換えてください。

alias -g H='`curl -sL https://api.github.com/users/YOUR_USERNAME/repos | jq -r ".[].full_name" | peco --prompt "GITHUB REPOS>" | head -n 1`'

ポイント

めんどいコマンド5: git checkout -b LOCAL REMOTE

Before

$ git checkout -b feature/something-great remotes/origin/feature/something-great

After

$ g b LR

便利革命する設定例

  1. git を設定
$ git config --global alias.b 'checkout -b'
  1. .zshrc に追記
alias -g LR='`git branch -a | peco --query "remotes/ " --prompt "GIT REMOTE BRANCH>" | head -n 1 | sed "s/^\*\s*//" | sed "s/remotes\/[^\/]*\/\(\S*\)/\1 \0/"`'

設定まとめ

  1. peco をインストール
$ brew tap peco/peco
$ brew install peco
  1. jq をインストール
$ brew install jq
  1. git を設定
$ git config --global alias.c 'commit -v'
$ git config --global alias.o 'checkout'
$ git config --global alias.b 'checkout -b'
$ git config --global alias.p 'pull'
$ git config --global alias.pu 'push'
$ git config --global alias.puu 'push -u'
$ git config --global alias.r 'remote'
  1. .zshrc に追記

YOUR_USERNAME を自分の github アカウントに書き換えてください。

alias g='git'
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`'
alias -g H='`curl -sL https://api.github.com/users/YOUR_USERNAME/repos | jq -r ".[].full_name" | peco --prompt "GITHUB REPOS>" | head -n 1`'
alias -g LR='`git branch -a | peco --query "remotes/ " --prompt "GIT REMOTE BRANCH>" | head -n 1 | sed "s/remotes\/[^\/]*\/\(\S*\)/\1 \0/"`'

これらの設定の問題点

  • 便利すぎて失禁する
  • 履歴で復元されるのは短縮系なので、一度選択したコマンドの再実行はちょっと不便