125
104

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

git logのオプションと綺麗にツリー表示するためのエイリアス

Last updated at Posted at 2019-01-29

要旨

まず、git logコマンドの細かなオプションを説明します。
最終的に、以下のようなコミットツリーの表示するためのオプションの指定方法を例示します。

スクリーンショット 2019-02-11 2.25.51.png # `git log`とは gitで管理しているリポジトリがあるディレクトリで`git log`を叩くと過去のコミット履歴が表示されます。
$ git log
スクリーンショット 2019-02-11 2.19.18.png

デフォルトだとリポジトリのコミットを新しい順に表示します。
表示される情報は

  • 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行で表示させます。
デフォルトでは情報量が多すぎるのでスッキリ見やすくなります。
スクリーンショット 2019-02-11 2.19.59.png

--graph

$ git log --graph

--graphを使うことでブランチやマージが分かりやすいツリー形式で表示してくれます。
スクリーンショット 2019-02-11 2.20.48.png

--pretty

ログをデフォルトの書式以外で出力するためのオプションです。
出力をカスタマイズできるのでエイリアスを登録していつも使っています。

$ git log --pretty=oneline

このように--prettyに用意されたオプションや自分で作ったフォーマットを渡して使います。

コミットの情報量を以下のオプションを使って調整できます。

  • oneline
  • short
  • medium
  • full
  • fuller
  • email
  • raw
スクリーンショット 2019-02-11 2.22.05.png スクリーンショット 2019-02-11 2.22.27.png スクリーンショット 2019-02-11 2.23.01.png

また、便利なオプションにformatがあり

$ git log --pretty=format:"%h %s"

" " の中に%h(短縮されたハッシュ)や%s(コミットメッセージ)などを入れることで表示させたい情報を好きな順番・色で表示することができます。また文字列を表示することもできます。

例えば

$ git log --pretty=format:"%h %CgreenHelloworld"

はこんな結果に。(%Cgreenで後ろの文字が緑色になります)
スクリーンショット 2019-02-11 2.23.34.png

$ git log --graph --pretty=format:"%h %ad %s"

はこんな結果に。(%adは日時です)
スクリーンショット 2019-02-11 2.23.57.png

%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'
スクリーンショット 2019-02-11 2.24.24.png

エイリアスに登録する

エイリアスに登録することでいちいち長いコマンドを入力しなくても簡単に綺麗なログを表示することができるようになります。

Gitのエイリアスの設定はシステム全体、ユーザー、リポジトリと3つの範囲があるのですが、今回はユーザーにしてどのリポジトリでも共通に使えるようにします。

エイリアスの設置は~/.gitconfigに記述します。

$ vim ~/.gitconfig

ファイルを開いて以下のように追記します。

~/.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

と打つだけで綺麗なログが表示されるようになります。
スクリーンショット 2019-02-11 2.25.51.png

125
104
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
125
104

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?