[Git] Gitのエイリアスを使うぞ!

2017.08.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

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

さらに便利になりました。