peco と alias -g で git に便利革命おきた
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
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
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
$ git checkout feature/something-great
$ 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
$ git pull
$ git push
$ git push -u origin feature/something-great
$ g p
$ g pu
$ g puu R B
$ git config --global alias.p 'pull'
$ git config --global alias.pu 'push'
$ git config --global alias.puu 'push -u'
alias -g R='`git remote | peco --prompt "GIT REMOTE>" | head -n 1`'
pull
/push
/push -u
→ p
/pu
/puu
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 に追記
$ git checkout -b feature/something-great remotes/origin/feature/something-great
$ g b LR
$ git config --global alias.b 'checkout -b'
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/"`'
これらの設定の問題点
- 便利すぎて失禁する
- 履歴で復元されるのは短縮系なので、一度選択したコマンドの再実行はちょっと不便
Author And Source
この問題について(peco と alias -g で git に便利革命おきた), 我々は、より多くの情報をここで見つけました https://qiita.com/Kuniwak/items/b711d6c3e402dfd9356b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .