要旨
まず、git log
コマンドの細かなオプションを説明します。
最終的に、以下のようなコミットツリーの表示するためのオプションの指定方法を例示します。
$ git log
デフォルトだとリポジトリのコミットを新しい順に表示します。
表示される情報は
- SHA-1チェックサム(ハッシュ)
- 名前
- メールアドレス
- 日時
- コミットメッセージ
です。
オプション
git log
の後ろにオプションをつけることで表示を変えられます。
主なオプションは以下の表の通り
オプション | 説明 |
---|---|
-p | 各コミットのdiffを表示する |
--word-diff | 単語単位でdiffを表示する |
--stat | 各コミットで変更されたファイルの統計情報を表示する |
--shortstat | --stat コマンドのうち、変更/追加/削除 の行だけを表示する |
--name-only | コミット情報の後に変更されたファイルの一覧を表示する |
--name-status | 変更されたファイルと 追加/修正/削除 情報を表示する |
--abbrev-commit | ハッシュの全体 (40文字) ではなく最初の数文字のみを表示す |
--relative-date | 完全な日付フォーマットではなく、相対フォーマット (“2 weeks ago” など) で日付を表示する |
--pretty | コミットを別のフォーマットで表示する。オプションとして oneline, short, full, fuller そして format (独自フォーマットを設定する) を指定可能 |
--oneline |
--pretty=oneline --abbrev-commit と同じ意味の便利なオプション |
--graph | ブランチやマージの歴史を、ログ出力とともにアスキーグラフで表示する |
よく使うのが--oneline
--graph
--pretty
です。
--oneline
$ git log --oneline
--oneline
を使うことでハッシュを短縮し、かつ各コミットを1行で表示させます。
デフォルトでは情報量が多すぎるのでスッキリ見やすくなります。
--graph
$ git log --graph
--graph
を使うことでブランチやマージが分かりやすいツリー形式で表示してくれます。
--pretty
ログをデフォルトの書式以外で出力するためのオプションです。
出力をカスタマイズできるのでエイリアスを登録していつも使っています。
$ git log --pretty=oneline
このように--pretty
に用意されたオプションや自分で作ったフォーマットを渡して使います。
コミットの情報量を以下のオプションを使って調整できます。
oneline
short
medium
full
fuller
email
raw
また、便利なオプションにformat
があり
$ git log --pretty=format:"%h %s"
" "
の中に%h
(短縮されたハッシュ)や%s
(コミットメッセージ)などを入れることで表示させたい情報を好きな順番・色で表示することができます。また文字列を表示することもできます。
例えば
$ git log --pretty=format:"%h %CgreenHelloworld"
はこんな結果に。(%Cgreen
で後ろの文字が緑色になります)
$ git log --graph --pretty=format:"%h %ad %s"
%h
のようなプレースホルダーは結構数があるので個人的に頻繁に使われるかなと思ったものだけを載せておきます。ドキュメントに全部載っているのでもっと知りたい人はご参照ください。(https://git-scm.com/docs/pretty-formats)
プレースホルダー | 説明 |
---|---|
%H | コミットのハッシュ |
%h | コミットのハッシュ(短縮系) |
%an | authorの名前 |
%ae | authorのメールアドレス |
%ad | authorの日付(--date= オプションに従った形式) |
%ar | authorの相対日付 |
%cn | committerの名前 |
%ce | committerのメールアドレス |
%cd | committerの日付(--date= オプションに従った形式) |
%cr | committerの相対日付 |
%s | コミットメッセージ |
%d | ブランチやタグの名前 |
%Cred | 文字を赤くする |
%Cgreen | 文字を緑色にする |
%Cblue | 文字を青くする |
%Creset | 文字の色を戻す |
%C(auto) | 文字の色をgitが用意している色にする |
%C( ) | 色、属性の指定 |
色と属性に関しては |
- 色
normal
black
red
green
yellow
blue
magent
cyan
white
-
#ff0ab3
のような8bitカラー
- 属性
-
bold
:太字 -
dim
:減光 -
ul
:アンダーライン -
blink
:点滅
-
皆さんも--pretty
を使ってオリジナルのログを表示してみてはどうでしょうか。
ちなみに自分はこれをエイリアスに登録して使っています。
$ git log --graph --pretty=format:'%x09%C(auto) %h %Cgreen %ar %Creset%x09by"%C(cyan ul)%an%Creset" %x09%C(auto)%s %d'
エイリアスに登録する
エイリアスに登録することでいちいち長いコマンドを入力しなくても簡単に綺麗なログを表示することができるようになります。
Gitのエイリアスの設定はシステム全体、ユーザー、リポジトリと3つの範囲があるのですが、今回はユーザーにしてどのリポジトリでも共通に使えるようにします。
エイリアスの設置は~/.gitconfig
に記述します。
$ vim ~/.gitconfig
ファイルを開いて以下のように追記します。
[alias]
tree = log --graph --pretty=format:'%x09%C(auto) %h %Cgreen %ar %Creset%x09by"%C(cyan ul)%an%Creset" %x09%C(auto)%s %d'
これで
$ git tree