300
288

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-08-12

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'
  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 git@github.com/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/"`'

これらの設定の問題点

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
300
288

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?