Gitでコミット履歴を確認するコマンドgit log
のオプションの一つに--pretty=format:" "
があります。
「–pretty=format」を使うと「何日前に更新されたか表示したい」「誰が更新したか表示したい」といったように欲しい情報を選択してコミット履歴に表示させることができます。
しかも、各情報を色分けして、非常に見やすくすることができます。
▼例
ここでは「–pretty=format」を使って、Gitのコミット履歴(ログ)を好きなようにかつきれいに表示させる方法についてまとめています。
pretty=formatの使い方
「–pretty=format:」オプションは「:」の後ろに、どの情報を表示したいかを指定します。
指定は「%記号」という表記のオプション記号で指定します。
$ git log --pretty=format:"オプション記号"
例えば、コミットハッシュ値の短縮形を指定するオプション記号「%h」を指定すると、コミット履歴で表示される内容がコミットのハッシュ値(短縮形)のみとなります。
$ git log --pretty=format:"%h"
4d96b99
b4b5a74
98204be
ff346b4
9345346
コミットメッセージを表すオプション記号「%s
」の場合は以下のようになります。
$ git log --pretty=format:"%s"
[A]Table icons comp
[A]UserDetail components
[A]Test components
[A]Vuetify
–pretty=format:と他のオプションを合わせて使う
git logで「–pretty=format:」を使う場合でも、他の「-n」や「–graph」といったオプションと合わせて使うこともできます。
例えば、表示するコミット履歴数を指定する「-n」オプションを使うと以下のようになります。
$ git log --pretty=format:"%h" -2
4d96b99
b4b5a74
「-2」なので、最新のコミットを2つだけ表示します。
–pretty=formatの主なオプション記号一覧
「–pretty=format」で使うオプションは複数ありますが、主要なものは以下の7つです。
オプション | 内容 | 実例 |
---|---|---|
%h | コミットのハッシュ(短縮形) | 4f919da1d |
%an | Authorの名前 | Sadick |
%ae | Authoのメアド | author@example.com |
%ad | Authorの日付 | Fri Sep 11 21:44:31 2020 +0300 |
%ar | Authorの相対日付 | 3 days ago |
%s | コミットメッセージ | Merge pull request #21193 from atom/fs-admin-0.15.0 |
%d | 参照名(ref name) | (HEAD -> master) |
たくさんあるように見えますが、「%a」はauthor関連の情報です。なので実際には「%h」「 %a」「 %s」「 %d」の4つがメインとなります。
なお、「%an」はAuthor Name, 「%ae」はAuthor Email、「%ad」はAuthor Date、「%ar」はAuthor Relativeの略です。
–pretty=formatのオプション一覧
いや、この7つのオプションだけじゃ情報が足りない!もっと情報が欲しいんだという方は下記をご参考ください。
オプション一覧
オプション | 内容 | 実例 |
---|---|---|
%H | コミットのハッシュ | 4f919da1d5b3f845d0b7310ccb6dd58c0f6503fa |
%h | コミットのハッシュ(短縮形) | 4f919da1d |
%T | ツリーのハッシュ | 4cda2817d9be96d5d80f0434ba99a85e42dd3b35 |
%t | ツリーのハッシュ(短縮形) | 4cda2817d |
%P | 親のハッシュ | 584476934785cf5a8df83f428912559e5eacc764 8fbf5ff503e002022f0d9df8cefdac19c4b83f5e |
%p | ツリーのハッシュ(短縮形) | 584476934 8fbf5ff50 |
%d | 参照名(ref name) | (HEAD -> master) |
%an | Authorの名前 | Sadick |
%ae | Authoのメアド | author@example.com |
%ad | Authorの日付 | Fri Sep 11 21:44:31 2020 +0300 |
%ar | Authorの相対日付 | 3 days ago |
%cn | Committerの名前 | GitHub |
%ce | Committerのメアド | noreply @github.com |
%cd | Committerの日付 | Fri Sep 11 21:44:31 2020 +0300 |
%cr | Committerの相対日付 | 3 days ago |
%s | コミットメッセージ | Merge pull request #21193 from atom/fs-admin-0.15.0 |
なお、これが全てではありません。他にも指定できるものがあります。
ツリーのハッシュとは何か?
tree hashはコミットの現在のディレクトリを示すハッシュ値です。
git log --graph
でブランチを切ると枝分かれしていくように、一本一本の線を表したのがツリーのハッシュ値です。
git logでよく見かけるHEAD(現在指しているコミット)やブランチは一つ一つの点を指すものです。過去の一つ一つの履歴と紐づいているため、過去のコミット履歴が変更になると、コミットのハッシュ値も変わります。
一方、treeは派生した線なので、間のハッシュが削除や変更されてもtreeのハッシュは変わりません。
親のハッシュとは何か?
Parent hashは現在のコミットの大元となっているブランチのハッシュ値です。
AuthorとCommiterの違い
Authorは作業そのものを行った人のことです。一方、Commiterはその作業を適用した人のことです。
Githubを使用してプロジェクトを進めている場合、commiterはGithubになります。
表示する情報の色を指定する方法(%Cとは何か?)
「–pretty=format」は表示する各情報ごとの色を指定することができます。
色の指定するオプション記号は「%C」です。「C」はColorの略です。
色の指定方法は以下の3種類があります。
%C(color)
カッコの中に色を記述することで、指定したオプションの色を変更することができます。
--pretty=format:"%C(color)%オプション"
%C(color)の指定で使える色は以下になります。
%C(color)で使える色 |
---|
red |
blue |
yellow |
black |
magenta |
cyan |
white |
auto |
normal |
autoを指定するとデフォルト設定のカラーになります。例えば、ハッシュ値ならyellow(黄色)になります。
%Ccolor
「%Ccolor」は%Cの後に直接色を記述する方法です。使える色はred, blue, greenの3色に限られます。
--pretty=format:"%Ccolor"
%Ccolorで使える色 |
---|
Cred |
Cblue |
Cyellow |
%C(オプション color)
%C(オプション color)は色の設定と同時に、太字や下線などの他のオプションも設定できる記述です。
--pretty=format:"%C(オプション color)"
%C(オプション color)で使えるオプション | 概要 |
---|---|
bold | 太字 |
ul | 下線 |
dim | 減光 |
reverse | 反転 |
blink | 点滅 |
%Cで色やオプションを指定するときの注意点
注意点
%Cを使って、情報に色をつけたり、太字にするといった書式を指定するときに注意点すべきことがあります。
それは、「%Creset」を設定しないと、後ろに続く情報の書式が全て同じになってしまうことです。
%Cresetの使い方
書式をクリアしたい場合は「%Creset」を記述します。
$ git log --pretty=format:"%C(bold red)%h%Creset - %s - %C(cyan)%an%Creset - %ar"
文字列や数値を挿入する方法
上記では%Cをつかって色や太字などを指定してきました。
表示の内容をさらに見やすくするために、各情報に任意の文字列や数値などを挿入することができます。
やり方はとても簡単で、表示したい文字列や数値を、表示したい場所に記述するだけです。
例えば、ハッシュ値の省略形の前に「HASH:」という文字列を入れる場合は以下のようになります。
$ git log --pretty=format:"HASH: %h"
HASH: 4d96b99
HASH: b4b5a74
HASH: 98204be
もちろん他のオプション記号と組み合わせることもできます。
$ git log --pretty=format:"HASH: %h (%ar)"
HASH: 4d96b99 (5 days ago)
HASH: b4b5a74 (5 days ago)
HASH: 98204be (5 days ago)
–pretty=format応用例
「–pretty=format」を使って、Gitのコミット履歴をとてもきれいに表示する参考コードを記載しておきます。
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit