広島Git勉強会 で @pecosantoyobe が git log の使えるオプションについて語るというナイスなセッションがありました。
その中で git log -S
の紹介がありましたが、説明が難しそうなので、さらっと流れてしました。
折角なので実例を紹介します。
複数人でプログラムを書いてると、「このコード書いたの誰だよwww」 的なことが稀にあります。
例えばこんなコードがあるとします。
class Sample
def hoge
hogehoge_gorogoro.to_sym.to_s
end
def hogehoge_gorogoro
"hogehoge_gorogoro"
end
end
「hogehoge_gorogoro.to_sym.to_s
ってなんだよ!! 意味あるのかよ!」 みたいなことがあると思います。
そんな時はすかさず git blame を利用します。
みやすさの都合上、emacs の magit-blame を利用します。
e92db224 で変更されていることがわかります。
ちょっとこの時のコミットを見てみましょう。
git show e92db224
インデントの修正されているだけで、大した情報が得られません。
こんなときに git log -S
を使います。
git log -S 'hogehoge_gorogoro' --patch
変更内容が見たいので、 --patch
をつけました。
「なんだよ。initial commit ではじめからそーなのかよ!!」 なんて展開でした。 ちょっと例が凝れてなくて便利さが伝わりにくいかもしれません。
diff の内容から更に git log -S で追ってみたりできます。 もし良いコミットログがあれば、コードの意図がわかったり チケットID などが記載されていれば、そちらを参照することになります。
「なんだよ。書いたのオレじゃねーか!! orz」 なんてこともよくあります。が、気を落とさず綺麗なコードを書いていきたいですね。
お試しあれ。