2013年5月21日火曜日

git を使いこなす為のエイリアス10選

注) acaptured の検索で飛んできた人はこちらにどうぞ。
http://outofsearch.blogspot.jp/2012/10/dmm.html

今回は git でみんなこれぐらいのは alias 登録して使っているでしょ?という例を幾つかあげたいと思います。

あまり表だって言われていないのが不思議ですが、 git の一番の特徴は、

頻繁に使うコマンドがオプション引数を付けて使うこと前提になっている。 すなわちオプション引数無しだと使いにくいったらありゃしない。


につきると思っています、個人的に。
例えば Bazaar の啓蒙文書の一つ Why Switch to Bazaar ? では、git log --help が 26 ページにものぼることを dis ってたりもします。確かに git log のオプションは凄まじいものがあります。

さて、本題にいきます。
これから紹介するエイリアスはどれも私が2年以上使用してきたものです。私の趣味で2文字〜5文字の短い名称となっていますが、名称よりもコマンドと引数の組み合わせを参考にして頂けたらと思います。

#1 gsm

# git status for modified files only
alias gsm='LANG=en_US.utf-8 git status --untracked-files=no'
修正したファイルをリストアップするコマンドです。 引数なしの git status だと大量に Untracked files: が表示されることがあったりして使いにくいのです。
ちなみに先頭の LANG=en_US.utf-8 は git からのメッセージを grep 等でひっかけやすいように英語にするためです。表示メッセージが日本語でもいい人や、そもそも普段の LANG が en_US な人は必要ありません。

#2 glogg

# git log with graphical tree
alias glogg='env LANG=en_US.utf-8 git log --graph --date-order --format="%h (%an) %s %d" --branches'
git のレビジョンツリーを全てのローカルブランチに渡ってグラフィカルに表示するコマンドです。 git log --graph だけだと表示フォーマットが微妙でいまいちなのが git らしいと思います。

#3 glog

# git log with short statistics
alias glog='env LANG=en_US.utf-8 git log --stat --decorate --date-order'
さきほどと同じくのログ表示のエイリアスです。こちらは詳細にログを見たい場合に使用します。 コミットをレビューしたいときには -p オプションを足して glog -p とかすれば diff も表示してくれます。

#4 giffc, #5  giff

# git diff for candidate files
alias giffc='env LANG=en_US.utf-8 git diff --staged '
alias giff='env LANG=en_US.utf-8 git diff '
git diff に --staged って引数があるとは知らずに、ステージングした変更を確認するにはどうするんだろうとその昔さんざん探しました。
修正確認は頻繁に使いますのでステージング用と未ステージング用のエイリアスをそれぞれ登録しておきましょう。
ステージング済みの変更確認用に giffc, ステージング前の変更確認用に giff です。

#6 gba, #7 gbr, #8 gb

# git branch both local and remote branch
alias gba='LANG=en_US.utf-8 git branch --all '
# git branch for remote branch
alias gbr='LANG=en_US.utf-8 git branch --remote '
# git branch for local branch
alias gb='LANG=en_US.utf-8 git branch '
git を使用していると、頻繁にブランチの確認をしますよね?
ローカルブランチ表示用に gb, リモートブランチ表示用に gbr, 全てのブランチ表示用に gba の3種のエイリアスを登録しておきます。

#9 gri, #10 gricontinue

# git rebase interactive
alias gri='LANG=en_US.utf-8 git rebase -i '
# git rebase continue
alias gricontinue='LANG=en_US.utf-8 git rebase --continue '
git に慣れてくると頻繁に git rebase -i をしませんか? 履歴の書き換えは git の醍醐味ですよね。
補完があれば git rebase --continue もそんなに面倒ではありませんが、git rebase -i を素早くちゃちゃっと行うのが git 上級者ですので(笑)、 gri で git rebase -i 開始、各コミットを編集後の再開は gricontinue としておけば素早く履歴の書き換えができるでしょう。

以上、git でよく使うコマンドと引数の組み合わせをエイリアス10選として紹介しました。