gitでとあるコミットがどのバージョンで入ったかを確認する方法

あるrugygemsについて一緒に仕事してる人に
「ドキュメントにある〇〇ってメソッドが使えないんですけど
使い方間違ってますかね?」と質問された。
 
使い方はよさそうなので
githubで現在利用中のバージョンのソースを確認してみると
まだその修正が入っていなかったようでした。
 
そこでどのバージョンで入ったかを確認してみました。
今回の用途では name-rev がスマートでしょうか。
 

1. githubのバージョンを辿る

githubでversion毎のソースを確認して、コミットされたタイミングを確認。
 
最初は、githubのblameでcommit日時を見て、どのtagに入ったかを見ようとしたけど
git tagのオプションには日時を見る方法が無いってことに気づいた。
 
今回はこれですぐに見つかったけど、コマンドでさくっと確認できる術があるはずだと思って
以下調べてみました。
 

2. git log --oneline --decorate

decorateを使うとtagも表示してくれます。

       --no-decorate, --decorate[=short|full|no]
           Print out the ref names of any commits that are shown. If short is specified, the ref name prefixes refs/heads/, refs/tags/ and refs/remotes/
           will not be printed. If full is specified, the full ref name (including prefix) will be printed. The default option is short.

1) blameでrevisionを調べる(githubでもgit blame -wでも)
2) git log --oneline --decorate
でログを表示させ、そのコミット以降につけられたtagを調べる。

f:id:rochefort:20140406001145p:plain

 

3. git name-rev

こちらを参考に。
git で指定したコミットがどのブランチに属するか知りたい - QA@IT

$ git blame -w lib/authlogic/session/cookies.rb
63842c9d (Malcolm Locke    2010-11-04 22:28:30 +1300  55)

$ git name-rev 63842c9d
63842c9d tags/v3.0.0~6^2~1

v.3.0.0の6個前のcommitで入っているっぽいです。
(キャレットとチルダがよくわかりません。いつも分かんなくなる。)

f:id:rochefort:20140406001146p:plain