エイリアス¶
本節では Git のエイリアス機能について記す。ここでは個人的に用いるものと、世間で広く用いられているものの両方を掲載していきたい。
概要¶
シェルのエイリアス機能のような、ユーザーが自分好みにエイリアスを定義する機能が
Git にもある。方法はファイル $HOME/.gitconfig
での設定による。つまりコンソールで次のようにタイプするか、
bash$ git config --global alias.ci 'commit -a'
またはテキストエディターで下のように編集する:
[alias]
ci = commit -a
推奨エイリアス¶
ネットからパクってきたエイリアスを以下に記す。
元コマンド名のアルファベット順に配列する。
記法はテキストエディターで
$HOME/.gitconfig
に入力する文字列の等号の右辺をそのまま記す。
エイリアスを設ける代わりに、各コマンドの構成オプションを設定することも検討したい。例えばコマンド X
の挙動を常に Y
にしたければ、構成オプション X.Y
のようなものが提供されているかどうかを調べる。
コマンド branch
¶
br = branch
長いコマンド名を単に短い名前で呼ぶだけのエイリアス。
コマンド cat-file
¶
出典:[GA3].
type = cat-file -t
引数に SHA1 値を与えてオブジェクトの種類を出力する。
dump = cat-file -p
引数に SHA1 値を与えてオブジェクトの内容を pretty-print する。
コマンド checkout
¶
co = checkout
長いコマンド名を単に短い名前で呼ぶだけのエイリアス。
コマンド cherry-pick
¶
出典:[GA1].
cp = cherry-pick
長いコマンド名を単に短い名前で呼ぶだけのエイリアス。
コマンド clone
¶
出典:[GA1].
cl = clone
長いコマンド名を単に短い名前で呼ぶだけのエイリアス。
コマンド commit
¶
ci = commit
長いコマンド名を単に短い名前で呼ぶだけのエイリアス。
さらにオプション
-a
を込める用例も見受けられるが、これはファイルをインデックスに明示的に追加する手間を省く人向けだろう。
コマンド describe
¶
出典:[GA1].
lasttag = describe --tags --abbrev=0
最後のタグを出力する。
コマンド diff
¶
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
¶
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
¶
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]