エイリアス

本節では Git のエイリアス機能について記す。ここでは個人的に用いるものと、世間で広く用いられているものの両方を掲載していきたい。

概要

シェルのエイリアス機能のような、ユーザーが自分好みにエイリアスを定義する機能が Git にもある。方法はファイル $HOME/.gitconfig での設定による。つまりコンソールで次のようにタイプするか、

bash$ git config --global alias.ci 'commit -a'

またはテキストエディターで下のように編集する:

[alias]
    ci = commit -a

推奨エイリアス

ネットからパクってきたエイリアスを以下に記す。

  • 元コマンド名のアルファベット順に配列する。

  • 記法はテキストエディターで $HOME/.gitconfig に入力する文字列の等号の右辺をそのまま記す。

エイリアスを設ける代わりに、各コマンドの構成オプションを設定することも検討したい。例えばコマンド X の挙動を常に Y にしたければ、構成オプション X.Y のようなものが提供されているかどうかを調べる。

コマンド branch

出典:[GA1], [GA2], [GA4].

br = branch

長いコマンド名を単に短い名前で呼ぶだけのエイリアス。

コマンド cat-file

出典:[GA3].

type = cat-file -t

引数に SHA1 値を与えてオブジェクトの種類を出力する。

dump = cat-file -p

引数に SHA1 値を与えてオブジェクトの内容を pretty-print する。

コマンド checkout

出典:[GA1], [GA2], [GA4].

co = checkout

長いコマンド名を単に短い名前で呼ぶだけのエイリアス。

コマンド cherry-pick

出典:[GA1].

cp = cherry-pick

長いコマンド名を単に短い名前で呼ぶだけのエイリアス。

コマンド clone

出典:[GA1].

cl = clone

長いコマンド名を単に短い名前で呼ぶだけのエイリアス。

コマンド commit

出典:[GA1], [GA2].

ci = commit

長いコマンド名を単に短い名前で呼ぶだけのエイリアス。

さらにオプション -a を込める用例も見受けられるが、これはファイルをインデックスに明示的に追加する手間を省く人向けだろう。

コマンド describe

出典:[GA1].

lasttag = describe --tags --abbrev=0

最後のタグを出力する。

コマンド diff

出典:[GA1], [GA2], [GA4].

df = diff

長いコマンド名を単に短い名前で呼ぶだけのエイリアス。

diff = diff --word-diff

コマンド diff で常に単語レベルでの差分を表示する。

dc = diff --cached

ステージにある内容と引数コミットでの内容との差分を表示する。

dlc = diff --cached HEAD^

ステージにある内容と直前コミットでの内容との差分を表示する。

wdiff = diff --color-words

単語レベルで差分を表示する際に、それらの変更部分に色を付ける。これはよく用いる。

コマンド grep

出典:[GA1].

gr = grep -Ii

コマンド grep を利用する際に、バイナリーファイルはコマンドの対象としないならば -I を、大文字小文字を区別しないで検索するならば -i を指定する。

ここは -I は是非採用したい。

コマンド log

出典:[GA1], [GA2], [GA3]. 書式制御を一部改変。

ls = log --pretty=format:'%C(yellow)%h%C(red)%d %C(reset)%s %C(blue)[%cn]' --decorate

短い書式でコミットをリストする。色付きブランチ、タグコメント付き。

  • %C(...): 文字色指定。普通の色が望ましいならば、先頭で %C(auto) しておくだけという方法がある。

  • %h: コミットハッシュ短縮版

  • %d: ブランチ、タグ等の名前 (refname)

  • %s: コミットログメッセージの一行目

  • %cn: コミット者名

ll = log --pretty=format:'%C(yellow)%h%C(red)%d %C(reset)%s %C(blue)[%cn]' --decorate --numstat

さらに各コミット 2 行目に変更ファイルの統計的情報も出力する。

dl = "!git ll -1"

直前コミット分だけでよい。

Git のエイリアスは妙に柔軟性が高く、記号 ! を先頭に宣言するとシェルコマンドも設定できる。

lds = log --pretty=format:'%C(yellow)%h %ad%C(red)%d %C(reset)%s %C(blue)[%cn]' --decorate --date=short

各コミットログを一行でリストする。日付付き。常用するのはこれ。

%ad は作成日付の意。

日付書式が YYYY-MM-DD なのでうれしい。

ld = log --pretty=format:'%C(yellow)%h %ad%C(red)%d %C(reset)%s %C(blue)[%cn]' --decorate --date=relative

各コミットログを一行でリストする。相対的時間差付き。

lnc = log --pretty=format:'%h %s [%cn]'

各コミットの ID とログメッセージとコミット者を出力する。

le = log --oneline --decorate

各コミットログを一行でリストする。ブランチ・タグ情報も出る。

hist = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short

マージグラフをも出力する。%an は作成者名。

fl = log -u

あるファイルに関係するすべてのログを出力する。ファイルの変更に関する詳細な情報も得られる。

lc = log ORIG_HEAD.. --stat --no-merges

前回 fetch 以降のすべてのコミットを統計とともにリストする。ただしマージは除く。

lg = log -p

ログにパッチを出力する。

コマンド reset

出典:[GA1], [GA2].

r = reset

長いコマンド名を単に短い名前で呼ぶだけのエイリアス。

r1 = reset HEAD^

作業コピーの状態を直前のコミットの直前に戻す。言い換えると直前のコミットをなかったことにする。

r2 = reset HEAD^^

直近の二個のコミットをなかったことにして、作業コピーの状態をも戻す。

rh = reset --hard

これは pull の結果が思わしくなかったときに使える。エイリアスを undo にする例もある。

rh1 = reset HEAD^ --hard

r1 のハードバージョン。ローカルでの変更分が失われる。危険。

rh2 = reset HEAD^^ --hard

直近の二個のコミットをなかったことにして、作業コピーの状態をも戻す。ローカルでの変更分が失われる。危険。

コマンド restore

re = restore

br, co, st, etc. と同様の主旨だ。rebase の別名にしていることはないと思う。

コマンド shortlog

出典:[GA2].

who = shortlog -s --

開発メンバー当たりのコミット数を表示する。

コマンド status

出典:[GA1], [GA2], [GA4].

st = status

長いコマンド名を単に短い名前で呼ぶだけのエイリアス。エイリアスを stat としたり、出力を凝縮するためにオプション -s を込める例もある。

コマンド switch

sw = switch

br, co, st, etc. と同様の主旨だ。

エイリアスを確認する

次のコマンドが基本的で、好みでソートしたり alias. を削ったりすればいい。そして、そのコマンドを別名にしておくのもいいし、ダサい気もするがシェルの alias にしてもいい。

$bash git config git config --get-regexp ^alias\.
$bash git config --global alias.alias "! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ / | sort -k1"

出典:[GA5]

出典