git logのオプションあれこれ
普段何気なくgit log叩いてるけど、実はオプションが多くて驚いた。
自分的に使えそうなものをメモしておく。
僕の考えた最強のry
色々調べた結果、自分で使うならこんなところかなーという結論に至った
$ git log --graph --name-status --pretty=format:"%C(red)%h %C(green)%an %Creset%s %C(yellow)%d%Creset"
そのまま使うには長すぎるのでエイリアスにしておく
$ git config --global alias.mylog 'log --graph --name-status --pretty=format:"%C(red)%h %C(green)%an %Creset%s %C(yellow)%d%Creset"'
以下、git logのオプションあれこれ
表示するコミット数を制限する -n num / -num
$ git log -n 5 $ git log -5
各コミットのdiffを表示する -p
オプション無しだとコミットID、Auithor、Date、コミットメッセージだけの表示だが、-pをつければ変更されたdiffも表示される
$ git log -p commit 7a3b16394b8164ef708caa5686f4cced9f976a0e Author: EC2 Default User <ec2-user@ip-10-132-178-74.ap-northeast-1.compute.internal> Date: Tue Jul 16 02:50:05 2013 +0900 second? diff --git a/first.txt b/first.txt index 5ec586d..31ad3ce 100644 --- a/first.txt +++ b/first.txt @@ -1 +1,2 @@ first commit +second
コミットIDを短縮表示 --abbrev-commit
SHA-1が長くてやだなーと思ったときに
マージコミットを表示しない --no-merges
リリース用ブランチとかけっこうマージコミット多いんだよね...
ログを1行表示にする --pretty=oneline / --oneline
正しくは--pretty=onelineが1行表示で、--onelineは--pretty=oneline --abbrev-commitと同じ意味らしい
$ git log --pretty=oneline 7a3b16394b8164ef708caa5686f4cced9f976a0e second? $ git log --oneline 7a3b163 second?
ブランチやタグ名を追記 --decorate
個人的に無名ブランチ切った時にどこのブランチ派生か確認したりする
グラフ表示 --graph
マージした後の確認に便利・・・かな?
--onelineと組み合わせると読みやすい
* commit 34331a8c5f761489baf151d97ae9e40702325164 |\ Merge: 3756bff 7a3b163 | | Author: EC2 Default User <ec2-user@ip-10-132-178-74.ap-northeast-1.compute.internal> | | Date: Tue Jul 16 03:07:35 2013 +0900 | | | | Merge branch 'feature' | | | * commit 7a3b16394b8164ef708caa5686f4cced9f976a0e |/ Author: EC2 Default User <ec2-user@ip-10-132-178-74.ap-northeast-1.compute.internal> | Date: Tue Jul 16 02:50:05 2013 +0900 | | second? | * commit 3756bfff44b99e56da2182521f0b0d07af940323
コミットによる変更ファイルと変更方法だけ表示 --name-status
$ git log --name-status commit 7a3b16394b8164ef708caa5686f4cced9f976a0e Author: EC2 Default User <ec2-user@ip-10-132-178-74.ap-northeast-1.compute.internal> Date: Tue Jul 16 02:50:05 2013 +0900 second? M first.txt
--onelineと組み合わせると読みやすい感じ
$ git log --name-status --oneline 7a3b163 second? M first.txt
2つのブランチ間で異なるコミットだけ出力
できることを知らなかった!
2つのブランチを..でつないで指定するだけ
どちらのブランチに含まれるコミットかを出すなら --left-rightオプションを付ける
$ git log --left-right master..feature commit > 7a3b16394b8164ef708caa5686f4cced9f976a0e Author: EC2 Default User <ec2-user@ip-10-132-178-74.ap-northeast-1.compute.internal> Date: Tue Jul 16 02:50:05 2013 +0900 second?
ログ出力フォーマットの指定 pretty=format:"(format)"
フォーマット指定でログ出力する方法。出力を指定するオプションがいくつかあるけど、使いそうなのは以下かなぁ
%H コミットのハッシュ %h コミットのハッシュ (短縮版) %ad Author の日付 %an Author の名前 %ar Author の相対日付 %s コミットメッセージ %d ブランチ/タグ名 %C([color]) これ以降の出力をcolorに変える [color] = ["Black","Red","Green","Yellow","Blue","Magenta","Cyan","White"] %Creset これ以降の出力をデフォルトに戻す
こんな感じに出力される
$ git log --pretty=format:"%h - %an, %ar : %s" 34331a8 - EC2 Default User, 8 minutes ago : Merge branch 'feature' 7a3b163 - EC2 Default User, 25 minutes ago : second?