Git
alias
Peco
benri

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

More than 3 years have passed since last update.

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

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


目録



  • 便利革命1:

    git commitg c




  • 便利革命2:

    git checkout feature/something-greatg o B




  • 便利革命3:

    git push -u origin feature/something-greatg puu R B




  • 便利革命4:

    git remote add origin git@github.com/user/repog r add origin H




  • 便利革命5:

    git checkout -b feature/something-great remotes/origin/feature/something-greatg b LR




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


Before

$ git commit


After

$ g c


便利革命する設定例



  1. .zshrc に追記

    alias g='git'
    



  2. 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



  2. git を設定

    $ git config --global alias.o checkout
    



  3. .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'



  2. .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 git@github.com/my/repo


After

$ g r add origin H

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


便利革命する設定例



  1. jq をインストール

    $ brew install jq
    



  2. git を設定

    $ git config --global alias.r 'remote'
    



  3. .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'
    



  2. .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



  2. jq をインストール

    $ brew install jq
    



  3. 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'



  4. .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/"`'



これらの設定の問題点


  • 便利すぎて失禁する

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