エイリアス¶
本節では 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^ --hardr1のハードバージョン。ローカルでの変更分が失われる。危険。rh2 = reset HEAD^^ --hard直近の二個のコミットをなかったことにして、作業コピーの状態をも戻す。ローカルでの変更分が失われる。危険。
コマンド restore¶
re = restorebr,co,st, etc. と同様の主旨だ。rebaseの別名にしていることはないと思う。
コマンド shortlog¶
出典:[GA2].
who = shortlog -s --開発メンバー当たりのコミット数を表示する。
コマンド status¶
st = status長いコマンド名を単に短い名前で呼ぶだけのエイリアス。エイリアスを
statとしたり、出力を凝縮するためにオプション-sを込める例もある。
コマンド switch¶
sw = switchbr,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]