【Git】–pretty=formatの%Cred%h%Creset や%C(yellow)%d, %an, %sとは何か?コミット履歴の色の指定や太字や下線を引く方法|オプション一覧

git-prograshi(プロぐらし)-kv git/github
記事内に広告が含まれていることがあります。

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
%anAuthorの名前Sadick
%aeAuthoのメアドauthor@example.com
%adAuthorの日付Fri Sep 11 21:44:31 2020 +0300
%arAuthorの相対日付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)
%anAuthorの名前Sadick
%aeAuthoのメアドauthor@example.com
%adAuthorの日付Fri Sep 11 21:44:31 2020 +0300
%arAuthorの相対日付3 days ago
%cnCommitterの名前GitHub
%ceCommitterのメアドnoreply @github.com
%cdCommitterの日付Fri Sep 11 21:44:31 2020 +0300
%crCommitterの相対日付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で色を指定する方法
  1. %C(color)
  2. %Ccolor
  3. %C(オプション color)


%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)"
point

色の指定を省略して、オプションのみを指定することも可能です。

$ git log --pretty=format:"%C(ul)%h"
$ git log pretty=format:"%C(reverse ul)%h"
%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
合わせて読みたい

ここで設定している各コードの意味や、毎回打ち込まなくても済むようにエイリアスを登録する方法については下記をご参考ください。

【Git】git logをキレイに整え、劇的に見やすくる方法。–pretty=formatを使った情報の色分けを実例で解説

表示例



参考リンク

github 公式ページ
github 公式ページ(英語)

タイトルとURLをコピーしました