Help us understand the problem. What is going on with this article?

git log をよしなに整形してコミットツリーを可視化する

More than 1 year has passed since last update.

完成図がこちら。
スクリーンショット 2019-07-24 20.22.28.png

はじめに

git logを見やすくする方法としては
git log を見やすくする - Qiita
などでも紹介されていますが、git logのオプション整理と勉強も兼ねて、せっかくなので自分でしっくりくるフォーマットにまとめて見ました。

git log にくっつけるオプションたち

コマンド全体はこちら。

$ git log --all --date-order --date=format:"%Y-%m-%d" --graph --format=" <%h> %ad [%an] %C(green)%d%Creset %s"

使用したオプションたちは以下になります。

--all

全ブランチを表示する。

--date-order

コミット順で表示する。
(デフォルトは親子関係を元に表示順が決定される。)

--date=format:"<format>"

dateを指定フォーマットで表示する。

  • %Y : 西暦4桁
  • %y : 西暦2桁
  • %m : 月2桁
  • %d : 日2桁

その他のプレースホルダーはgit help logでご確認ください(丸投げ)。

--graph

コミット履歴をラインで結んで可視化する。

--format="<format>"

コミットログの各情報の表示/非表示やフォーマットを指定する。

  • %H : コミットハッシュ
  • %h : コミットハッシュ(短縮版)
  • %ad : Authorの日付
  • %an : Authorの名前
  • %d : HEADとブランチ
  • %s : コミットメッセージ(の1行目)
  • %C(<color> <style>) : 表示色のフォーマットを指定する。
    • <color> : normal, black, red, green, yellow, blue, magenta, cyan, white
    • <style> : bold(太字), dim(減光), ul(下線), blink(点滅), reverse(反転)
  • %Creset : 指定した表示色を解除してデフォルトにする。

その他のプレースホルダーはgit help logで略。

aliasに登録

無限回使用するのでaliasに登録しておくと便利です。

git config --global alias.tree 'log --all --date-order --date=format:"%Y-%m-%d" --graph --format=" <%h> %ad [%an] %C(green)%d%Creset %s"'

あとはgit treeとするだけで↑が実行されます。
<format>を極めて僕の/私の考えた最強のtreeコマンドを作ろう!

オチ(蛇足)

そもそも何でこんなこと調べることになったかと言うと、
PC更新にあたってgitのconfigもお引越ししようと思ったのですが、
git config --globalをはじめどこを見てもtreeのaliasが見当たらない、という(しょーもない)ことがキッカケでした。
そもそも息を吸うように使っていたので完全にgit for windowsのデフォルトコマンドだと思い込んでいました。

しかも、確かに冒頭の記事を参考にしたはずなのですが、何故か自分の使用していたフォーマットと微妙に異なる(冒頭の図)。

昔のことすぎて何も思い出せないので、この際一から調べて同じフォーマットを再現しよう、ということになりました。

オチ(隙を生じぬ二段構え)

試しに旧PCでgit help treeと叩いたら

'tree' is aliased to 'log --graph --date-order -C -M --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=short'

と吐き出しました。
一体、いつ、誰が、どこに定義したんだ。。。

諸々調べてた時間とは
改めてmanualページなどをちゃんと読む良い機会になりました。

参考

git help log(manualページ)
git log を見やすくする - Qiita
git logを時間順にソートする
GoogleCloudPlatform/nodejs-docs-samples

AtPOP
某メーカー組み込みエンジニア見習い未満2年生
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした