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

  • 273
    Like
  • 2
    Comment
More than 1 year has 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/"`'
    

これらの設定の問題点

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