なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

git で特定の commit に紐付けられたすべてのタグを列挙したい

git の小ネタ。例えば次のようにタグを付けているとき:

commit #3 <--- v1.0.0 / latest
  |
commit #2 <--- v0.9.0
  |
commit #1 <--- v0.8.0

commit #3 に紐付けられたすべてのタグ、つまりは v1.0.0latest を取得したいときどうすればよいか?という問題。 答えは簡単で、 --points-at オプションを使うこと。

$ git tag --points-at <commit #3>
v1.0.0
latest

これだけだと短いので、レシピを紹介する。最新のタグを取得するには、次のようなコマンドを打てば、大体取得できる:

$ git tag --points-at=$(git rev-list --tags --max-count=1)
v1.0.0
latest

git rev-list --tags でタグが関連付けられたすべての commit を、 --max-count=1 で最新の1件のみを取得、それを --points-at に渡すことで自動的に最新のタグがえられるというわけ。 ということで、メモでした。