上司に怒られないためのgit その2 ~つくってワクワク、自分だけのgit log編~


どうもこんにちは、新卒エンジニアの久保田です。

前回の記事から早3週間、
遂に今回から本格的に「git」のお話に入っていきたいと思います。改めまして宜しくお願い致します。


あなたを幸せなgit lifeに導くための記念すべき第一回目のお題は、「git log」です。


何気なく使っているこのコマンドは、実は非常に多くの情報を提供しています。
git logが理解できれば、gitの状態が手に取るようにわかり、
「ググったコマンドをそのまま実行してよくわからない状態になり、今どんな状態かすらもわからない」
といった事故を防げるはずです。
結果的に上司の怖い顔を見なくてもよくなるということですね! 

そして、git logは多くのオプションを持っています。
全部は紹介できないので、僕が普段から気に入って使っているいくつかのオプションを紹介します。
git logを使いこなし、本当に必要な情報を見つけられるようにしましょう~。

log



まず、git logは現在のブランチのコミットの履歴を確認できます。


①・・・コミットにユニークについているhash値です。この値を指定して、resetをしたりするので、とても重要です。
②・・・コミットをしたユーザーです。configで設定してある名前とメールアドレスがでます。隠させてください。
③・・・コミットした時間です。
④・・・コミットメッセージです。どんなコミットをしたかをセンス良くまとめるのがプロですね。

ここまでは簡単ですね。
さて、ここからオプションを使って、git logをもっと便利にしちゃいましょう。



・git resetするためにハッシュ値の頭だけ知りたいけど、コミットがかなり前でさかのぼるのがめんどくさい時

そんな時は「git log --oneline」
実行すると、必要なハッシュ値とコミットメッセージだけを一行で表示してくれます。

55個もコミットのログを表示できます。その数普通にgit log をした時の「11倍」(当社比)

超効率的ですね!!

log_oneline
 


・いやいや、逆にコミットごとにどんな変更があったのかをもっと詳しくみたいんだよという時

そんな時は「git log -p」

log_p

 

これはかなり便利です!
どのファイルにどんな変更があったか、コミットごとの変更を細かく見ることができます。
これはなかなかいろんなシーンで使えそうですね。



・いやぁ、マージとかはっきりさせたいから、グラフで見たいんだよねという時


そんな時は「git log --graph」

このコマンドを実行すると、グラフ形式で歴史を振り返る事が出来ます。
ブランチの分岐やマージの状況が確認できちゃいます!

使っているところを後ろから見られたいコマンドナンバー1ですね。 



・もう、ブランチとか関係なく全てを見たい時

そんな時は、「git log --all」

その名の通り、すべてのブランチの履歴を見ることができます。



・コミットごとに変更の統計情報が見たい時

そういった場合には、「git log --stat」

log_stat


 
名前がずば抜けていかしてますね。
ファイルごとに変更があった行数を確認できます。
あれ?なんでこのファイル変更されてんの?とかも確認できちゃいます。
 


・二日前からのコミットだけみたいんだよなぁ。。。という時

時間指定まで出来てしまいます、「git log --since=2.days」
数字は変えられますし、daysをweeksやmonthにも出来てしまいます。

もちろん、逆に、二日以降前のコミットだけ見たい、なんてこともできます。
「git log --until=2.days」
こちらも同様、日づけ単位自由自在です。



・ダメだ、こうじゃない、もっと好みにgit logを改造したいもっと恰好よくgitを使いたい。。。という時

もちろん用意されています。自分でgit log のフォーマットを指定できる、「git log --pretty=format:」
formatオプションには、様々なプレースホルダー文字を指定できます。

これを使えば、
コミットメッセージ[ハッシュ値] by Author名 its commited 日づけ 
のようなおしゃれなgit logをだすことができます。
git log --pretty=format:"%s[%h] by %an its commited %ad "

git_format_1


どうでしょう、めっちゃかっこよくないですか?


更に、色もつけられます。

git log --pretty=format:"%C(red)%s%C(white)[%C(yellow)%h%C(white)] by %an its commited %ad "

log_format_2



そして、これらのコマンドは組み合わせることもできます!
そして僕が作った最高にクールかつ実用的なコマンドがこちら!!

git log --graph --stat --pretty=format:"%C(green)%s%C(white)[%C(yellow)%h%C(white)] by %an its commited %ad "


少し長くなってしまいましたが、今日はこのくらいで失礼いたします。
 
では、みなさんもgit log を使いこなして、すばらしいgit lifeをお過ごしください!!