peco
と alias -g
で git
に便利革命がおきるので、ぜひご活用ください。
記事の一番下に設定のまとめがあります。
目録
-
git commit
→g c
-
git checkout feature/something-great
→g o B
-
git push -u origin feature/something-great
→g puu R B
-
git remote add origin [email protected]/user/repo
→g r add origin H
-
git checkout -b feature/something-great remotes/origin/feature/something-great
→g b LR
めんどいコマンド1: git commit
Before
$ git commit
After
$ g c
便利革命する設定例
- .zshrc に追記
alias g='git'
- 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
とできないのが惜しいところです。
便利革命する設定例
- peco をインストール
$ brew tap peco/peco
$ brew install peco
- git を設定
$ git config --global alias.o checkout
- .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
便利革命する設定例
- git を設定
$ git config --global alias.p 'pull'
$ git config --global alias.pu 'push'
$ git config --global alias.puu 'push -u'
- .zshrc に追記
alias -g R='`git remote | peco --prompt "GIT REMOTE>" | head -n 1`'
ポイント
- remote も peco しちゃう
- 短縮系には派閥がある
- 私は:
pull
/push
/push -u
→p
/pu
/puu
めんどいコマンド4: git remote add
Before
$ git remote add origin [email protected]/my/repo
After
$ g r add origin H
自分の Github アカウントのリポジトリの一覧から選択できます。
便利革命する設定例
- jq をインストール
$ brew install jq
- git を設定
$ git config --global alias.r 'remote'
- .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`'
ポイント
- Github API を curl で叩いて jq で抜き出す
めんどいコマンド5: git checkout -b LOCAL REMOTE
Before
$ git checkout -b feature/something-great remotes/origin/feature/something-great
After
$ g b LR
便利革命する設定例
- git を設定
$ git config --global alias.b 'checkout -b'
- .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/"`'
設定まとめ
- peco をインストール
$ brew tap peco/peco
$ brew install peco
- jq をインストール
$ brew install jq
- 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'
- .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/"`'
これらの設定の問題点
- 便利すぎて失禁する
- 履歴で復元されるのは短縮系なので、一度選択したコマンドの再実行はちょっと不便