Help us understand the problem. What is going on with this article?

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

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

これらの設定の問題点

  • 便利すぎて失禁する
  • 履歴で復元されるのは短縮系なので、一度選択したコマンドの再実行はちょっと不便
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした