Gitの小ネタおれおれAdvent Calendar 2022 – 19 日目

git log --pretty=xxx で表示する内容をカスタマイズできます。

git log --pretty=format:xxx だとさらに自由自在に変更できます。

--pretty=format:xxx

format の名の通りフォーマットを指定します。

とりあえず Hello World を。

$ git log --pretty=format:"Hello World!"
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!

何もわからんですね。

コミットごとの情報は %x みたいなプレースホルダーから利用できます。

$ git log --pretty=format:"The author of %h was %an, %ar%nThe title was >>%s<<%n"
The author of 7f3301d361f was Joyce Er, 3 weeks ago
The title was >>Report cancellation errors in telemetry (#167799)<<

The author of f3996b416f8 was Joyce Er, 3 weeks ago
The title was >>Add 1-step Continue in Local Folder option (#167795)<<

The author of c87fa19f793 was Connor Peet, 3 weeks ago
The title was >>cli: avoid interactions when running integrated (#167780)<<

The author of 968026a46db was Raymond Zhao, 3 weeks ago
The title was >>Use includes instead of indexOf (#167778)<<

プレースホルダー一覧

使いそうなものだけ抜粋。

  • %% – “%” を出力。"\\" 的な
  • %ad – コミット作成日時 (Author Date)
  • %an – コミット作者名 (Author Name)
  • %ar – コミット作成日時(相対表示。X 日前、とか) (Author date (Relative))
  • %b – コミットメッセージの本文
  • %C(…​) – 色の指定 (Color)
    • %C(auto) – 自動着色
    • %C(blue) – 青
    • %C(green) – 緑
    • %C(red) – 赤
    • %C(reset) – 元の色
    • %C(yellow) – 黄
  • %D – ブランチ名とかタグ名とか
  • %H – コミット ID (Hash (?))
  • %h – 短いコミット ID
  • %n – 改行。\n 的な。ちなみに \n はそのまま出力される
  • %s – コミットの題 (Subject)

元の git log っぽいもの

$ git log --pretty=format:"%C(yellow)commit %H%C(auto)%d%nAuthor: %an <%ae>%nDate:   %ad%n%n%s%n%n%b"
commit 7f3301d361f4805c404603dd4d76fcfd36347419 (HEAD -> main)
Author: Joyce Er <[email protected]>
Date:   Wed Nov 30 22:19:51 2022 -0800

Report cancellation errors in telemetry (#167799)


commit f3996b416f847af62eef1a50c6c678dedd47a92e
Author: Joyce Er <[email protected]>
Date:   Wed Nov 30 22:00:43 2022 -0800

インデントとかやりようがあるんかな。

コミットグラフ

--graph オプションでブランチの流れが見える線が付きます。これでどうマージされてるのかわかる。

$ git log --graph --date=short --pretty=format:"%C(yellow)%h %C(white)%s %C(green)%d %C(red)%cn %C(blue)%cd - %cr" 7e351937da8
* 7e351937da8 Don't use IObservableValue (#167072)  GitHub 2022-11-23 - 4 weeks ago
*   765c46f7ca9 Merge pull request #167080 from microsoft/tyriar/166158  GitHub 2022-11-23 - 4 weeks ago
|\  
| * 4cd7bfa2cdd Update xterm.js  Daniel Imms 2022-11-23 - 4 weeks ago
* |   33671e4554a Merge pull request #165579 from rwe/shellint-no-decode-iterm2  GitHub 2022-11-23 - 4 weeks ago
|\ \  
| * | 9eb2de787ab Merge branch 'main' into shellint-no-decode-iterm2  GitHub 2022-11-23 - 4 weeks ago
| |\| 

その他

%an vs %cn

%anAuthor Name%cnCommitter Name

試したところ committer の方は GitHub になったりするみたい。

$ git log --pretty=format:"%h Committer=%cn, Author=%an"
7f3301d361f Committer=GitHub, Author=Joyce Er
f3996b416f8 Committer=GitHub, Author=Joyce Er
c87fa19f793 Committer=GitHub, Author=Connor Peet
968026a46db Committer=GitHub, Author=Raymond Zhao
2a16bdb4677 Committer=GitHub, Author=Harald Kirschner
56d73a45e38 Committer=GitHub, Author=Peng Lyu
bffd0181d3f Committer=GitHub, Author=Raymond Zhao
c8dd73b410c Committer=GitHub, Author=Peng Lyu
cec4114c0c1 Committer=GitHub, Author=Matt Bierner
e84133953f2 Committer=GitHub, Author=Raymond Zhao
dfca1c7088b Committer=GitHub, Author=Raymond Zhao

おしまい

誰かの .gitconfig から alias をコピペしてくるのがおすすめ。

参考