Edited at

git log の option 色々

More than 3 years have passed since last update.


git log の option を見ていく

Git のコマンドには様々な option が指定できるようになっている.

自分も全部は知らないけれども、ちょくちょく使ってる option をここで色々と紹介していきます。

今回 option を紹介するのは以下のコマンド.

$ git log


git log --oneline

多分知ってる人も多いんじゃないかと思うコマンドの一つ.

通常の 「git log」だと

commit {full-commit-id}

Author: {author-name} <{author-mail}>
Date: {date-time-year-timezone}

{first-line-comment}

{another-comment}

といった形式でログが表示されるが、「--oneline」を加える事で

{first-7-chars-of-commit-id} {first-line-comment}

という、上のような1行形式で表示されるようになる.

日付等ではなく、ログの流れを追いたい時等に便利なのと同時に

「git のログを書く時に1行目は超重要」といわれる理由はここにある.


git log --stat

git log に変更したファイルの簡易情報(ファイル名と変更した行数)を表示するもの.

バグが見つかった場合に、直近で編集したコミットがどれかを追うのに使ったりしてる。

あとは簡単にコミットの雰囲気を掴むのにも有効だったり。

(今思ったけどファイルベースでログを見るとかあるんじゃなかろうか...)


git log -p

git diff を同時に見せてくれるオプション。

便利そうに見えて結構長くなって見づらい/探しづらい事も多々あるのであまり使ってなかったり...


git log --graph

git log の出力に commit の軌跡を見せてくれる option.

普通に見ると commit comment とかでやたらと長ったらしくなるので --oneline option と組合せる事が多い.

$ git log --graph --oneline

* 9b6d743 commit comment
* 9b56b4e comment
* a49b6aa Merge branch 'master' of /path/to/repo
|\
| * f123447 remove old file
| * 3fa194a add new file
| * 7b3eb4f remove backups
* | 3309805 I think I did something
|/
* ddfa3b5 do comment
* fc499de we are comment

こんな感じに.

こうしてみると自分の運用が下手糞なのがバレたりするので気をつけて.最近、複数人と開発してる log の graph 見直した時意味不明すぎて泣いた.

$ git log --graph --oneline

* e0a0
|\
| * e3cf
| |\
| * | 79bb
* | | f2e4
* | | 7b17
* | | 2560
| |/
|/|
* | ff5e
|\ \
| |/
| * 85fd
| |\
| | * 07a4
| | |\
| | | * 0406
| | * | 8e5c
| | |/
| * | 31f0
| |/
* | b643
|/
* 87fa
* e771
|\
| * 638e
* | a250
|/
* fa0e
|\
| * fabc
| * f585
| * 9cc2
| * 2bb2
| |\
| * \ fe62
| |\ \
| * | | d1c6
* | | | 7126
* | | | 5cf7
* | | | 3dc7
|\ \ \ \
| | |_|/
| |/| |
| * | | a86d
| * | | 4e24
| |\ \ \
| * | | | 1dba
| * | | | 17fc
| * | | | d9cf
| * | | | 96bf
| | |_|/
| |/| |
* | | | 4b36
| |/ /
|/| |
* | | 9e84
|/ /
* | ae31
* | 6bef

色んな環境から push とか pull とか相互にしまくってるとこんな事なるから運用方法は気をつけて.

ただ、逆にこの graph がある程度見易くなるように勤める事ができればそれは上手く運用できてると言えるのかな? とも思ったりはする.


git log --decorate

地味に便利だと思う git log の option の一つ.

この option を使うと git log の結果に 「今存在する branch と HEAD の位置」を表示してくれるようになる.

$ git log --decorate

commit 4095c83619ce58e6c0263c1435d55892b104780b (HEAD, origin/master, master)
Author: da0shi <email@address.com>
Date: Wed Jul 16 05:33:13 2014 +0900

compatibility with php5.3. Don't use function return for empty()

empty(func()) was not enabled in php5.3.3.

こんな感じに.

今のbranchの状態とかを把握するのに良くて、 --oneline option と組合せるとさらに確認が楽になったりもする.


git log -n <number>

git log で表示するログの数を制御するオプション



$ git log -<number>



でも大丈夫。

ログ全部が一気にズラッと出ると見づらい時にでも。

暇な時に随時追加していく予定です.

「こんな option もあるよ!」ってものがあればコメントで教えてもらえれば幸いです.

ってか改めて git log の option 調べてみたらベラボウにある...