[Git] Gitのエイリアスを使うぞ!
はじめに
gitコマンドをポチポチ打っていると「いつも同じことしてるなぁ」が多くなってくるものです。そういう類のコマンドはまとめてエイリアス(別名化)にすることができます。これにより、自分だけのgitコマンドを増やしていくことができ、作業が効率よくなります。
エイリアスの管理
エイリアスはgit config
コマンドで設定していくことができます。エイリアスには各々適用範囲を設定することができ、その用途に応じて使い分けするといいと思います。
デフォルト | リポジトリのみ |
--global | Gitのユーザのみ |
--system | マシン全体 |
今回は色んなリポジトリで共通で使えるようにする意味で --global
でやっていきます。
エイリアスを作る
$ git config --global alias.(エイリアス名) '(コマンド)'
git config
に--global
オプションを付けて、英数字とハイフンのみですが自由に名前を設定します。
コマンドのところに実際に行う処理を書きます。単独のgitコマンドだけならばクォーテーションは不要でgit
自体の入力も省略可能です。色んなコマンドの複合ならば!
から始めてクォートで囲むほうが良さそうです。
たとえば
# 単独のgitコマンド。(長いから省略したい時など。 e.g. Pullコマンドをplにしたい) $ git config --global alias.pl pull # 複合コマンド (e.g. 現在のブランチ名をみる) $ git config --global alias.current '!git symbolic-ref --short HEAD'
こういう感じです。これを実際に使うと
$ git pl
これでプルが行われるようになったかと思います。
エイリアスを削除する
$ git config --global --unset alias.(エイリアス名)
削除するときは--unset
オプションでエイリアス名を指定します。実際に実行してみると
$ git config --global --unset alias.pl $ git pl
git: 'pl' is not a git command. See 'git --help'.
このようにエラーが返ってくるかと思います。
エイリアスの一覧を見る
$ git config --list | grep ^alias\.
--list
オプションとgrep
の組み合わせで追加したエイリアスを確認することができます。さきほどの「エイリアスを作るの」項で追加した後に実行してみると
alias.pl=pull alias.current=!git symbolic-ref --short HEAD
と表示され、エイリアスの中身も確認できるかと思います。
エイリアスの一覧もエイリアス化
せっかくなので、エイリアスの一覧を出すのも簡単になるようにエイリアス化しておきましょう。
$ git config --global alias.alias '!git config --list | grep ^alias\.'
こうしておけば
$ git alias
と打つだけでエイリアスが確認できます。
エイリアスを使った例
以前に投稿した 【Git】Tips: マージ済みのブランチを一括で削除する で紹介したコマンドも長いのでエイリアス化してみます。 (注意事項はリンク先をお読みください)
$ git config --global alias.tidy '!git checkout master && git branch --merged | grep -v "*" | xargs -I % git branch -d %'
散らかったブランチを片付けるという意味で「tidy(=お片付け)」というコマンド名にしました。 (cleanというコマンドは既に存在するのでtidyにしました)
$ git tidy
これでマージ済みで無駄なブランチがガーッと消えます。 チェックアウトしたときにフェッチするコマンドを付け加えたら更に便利かもしれません。
さらにエイリアスで省略する
今まではgit config
でのエイリアス化の方法でした。しかしそもそもgit
と打つことすらも面倒くさくなることもあるかもしれません。そういうときはLinuxのalias
コマンドでさらに打つコマンドを省略するのよいかもしれません。
サンプルとして現在のブランチ名を取得するコマンドをcrbr
(カレントブランチの省略)にする
$ git config --global alias.current '!git symbolic-ref --short HEAD' $ alias crbr='git current'
そうすると
$ crbr master
さらに便利になりました。