Gitでいろいろな形式、方法でタグの一覧を出力する

Bash,Git

はじめに

Git のローカルワークスペース内でタグの一覧を出力するいろいろな方法を紹介します。

検証環境

$ git version
git version 2.40.0

利用する Git リポジトリは新規に自作するのが面倒だったので、程よい数のタグを保有している適当なリポジトリを利用させていただきました。

シンプルにタグを一覧出力

git clone したディレクトリ内でタグの一覧を出力する最もシンプルな方法は、 git tag コマンドを実行することです。

$ git tag
v0.1.0
v0.2.0
v0.3.0
v0.3.1
v0.4.0

⚠ 事前に以下のコマンドを実行し、ローカルのワークスペース内にリモートリポジトリ上にある最新のタグ情報を取得していることを確認しておきましょう

$ git fetch --all --tags

コミットハッシュと一緒にタグを一覧出力

git show ref コマンドを使うことで、タグと一緒にコミットハッシュを一覧出力できます。
( 正しくはコミットハッシュの一覧の後方にタグをつけて出力しているんですけどね )

$ git show-ref --tags -d

2f192ebffa8f8f8d1a5882e74188d6f67b295950 refs/tags/v0.1.0
5030f53eccc66ba9a041d1a4a28f73286de50449 refs/tags/v0.2.0
0e5e44572844ce8fd027d96a5001125c33abd822 refs/tags/v0.3.0
2e2477881bc52791f7bc0321599064b9daf7c6bf refs/tags/v0.3.1
7b032e4b232666ee24f150338bad73de65c7b99d refs/tags/v0.4.0

名前をパターン指定してタグを一覧出力

-l オプション(--list)を使って、指定されたパターンにマッチしたタグ名のものだけを一覧出力できます。

# メジャーバージョンとパッチバージョンが0となっているもののみ出力
$ git tag --list 'v0.*.0'
v0.1.0
v0.2.0
v0.3.0
v0.4.0

# マイナーバージョンが1または3のものののみ
$ git tag --list 'v0.[13].*'
v0.1.0
v0.3.0
v0.3.1

# これでは何もヒットしないです。部分を指定するのではなく、全体を指定しなければならない
$ git tag --list 'v0.*.'

説明文付きでタグを一覧出力

アノテーションメッセージ付きでタグを一覧出力するには、 -n オプションを使います。

ちなみにアノテーションメッセージというのは、 git tag コマンド実行時に -m オプションを使って付与したメッセージのことです。
もし git tag コマンド実行時にこのアノテーションメッセージが付与されていなかった場合には、 出力されるメッセージはタグに該当するコミットのコミットメッセージとなります。

$ git tag -n
v0.1.0          Bats 0.1.0
v0.2.0          Bats 0.2.0
v0.3.0          Bats 0.3.0
v0.3.1          Bats 0.3.1
v0.4.0          Bats 0.4.0
# アノテーションメッセージ付きのタグを新規追加してみる
$ git tag hello -m hogehoge

$ git tag -n
hello           hogehoge
v0.1.0          Bats 0.1.0
v0.2.0          Bats 0.2.0
v0.3.0          Bats 0.3.0
v0.3.1          Bats 0.3.1
v0.4.0          Bats 0.4.0

このコマンド、メッセージは一行で表示されるのですがメッセージの詳細を確認したいとき、つまり2行目以降も確認したい場合には -n オプションの後ろにメッセージ最大出力行数を指定します。

例えば、3 行まで出力させるようにしてみます。

# メッセージが4行に渡っている場合
$ git tag hello -m "aaa

bbb
ccc"

$ git tag -n
hello           aaa
v0.1.0          Bats 0.1.0
v0.2.0          Bats 0.2.0
v0.3.0          Bats 0.3.0
v0.3.1          Bats 0.3.1
v0.4.0          Bats 0.4.0

$ git tag -n3
hello           aaa

    bbb
v0.1.0          Bats 0.1.0
v0.2.0          Bats 0.2.0
v0.3.0          Bats 0.3.0
v0.3.1          Bats 0.3.1
v0.4.0          Bats 0.4.0

ひとこと

最近最新タグを取得するロジックを記述したり 、タグの操作をする仕事が重なりました。

Bash,Git