1. ホーム
  2. 記事一覧
  3. リリース管理に欠かせない!コミットにタグを付ける「git tag」コマンドの使い方

2024.05.08

リリース管理に欠かせない!コミットにタグを付ける「git tag」コマンドの使い方

アプリ開発において「Git」は必須スキルとなってきます。Gitの基本コマンドは知っているけど他のコマンドはよく知らない、Gitコマンドをもっと知って便利に使いたい!と思っている方、また 特定のコミットに普遍的な目印をつけたい! や、 リリースバージョンを管理したい! という方向けに、この記事では「git tag」について解説します。

GitについてはエンベーダーのLinux応用コースで詳しく学ぶことができます。

https://envader.plus/course/5/scenario/1055

様々なGitコマンドを習得し、Gitマスターを目指しましょう!

「git tag」でできること

  • コミットにタグ付けをして特定のバージョンやリリースポイントにマーキング
  • タグを使ってリポジトリの特定のバージョンを取得
  • リリースノートの作成やバージョン管理に活用

「git tag」コマンドの開発現場での活用例

  • リリースバージョンの管理

    アプリケーションのリリース時に、git tagを使ってリリースバージョンにタグ付けします。タグ名にはセマンティックバージョニング(例: v1.0.0)を用いるのが一般的です。タグを付けることで、そのバージョンのソースコードを簡単に参照できるようになります。

  • バグ修正時の特定バージョンの参照

    過去のリリースバージョンにバグが見つかった際、git switchコマンドとタグ名を使ってそのバージョンのソースコード(v1.0.0と仮定します)を取得し、バグ修正を行います。修正後、新たなコミットをパッチバージョン(v1.0.1)としてタグを付けリリースすることで、リリースバージョンを管理できます。

  • リリースノートの作成

    リリースノートの作成にgit logコマンドやgit diff コマンドとタグ名を組み合わせて使用することで、前回のリリースタグから現在のリリースタグまでのコミットログや差分を抽出することが可能です。(例:git log/diff <old-tag>..<new-tag>

使い方

タグとは、コミットに付与できる「別名(エイリアス)」のようなもので、一度作成されると、常に同じコミットを参照し続けます。開発時に特定のコミットにバージョン情報などを付けておきたいときに大変便利です。

注意

  • 同一のコミットに複数のタグを付与することは可能ですが、重複した名前のタグはつけられません。
  • タグは通常のプッシュではリモートに反映されません。リモートにプッシュする方法は記事後半のオプションを参考にしてください。

タグの種類

Gitで使えるタグには「軽量タグ(Lightweight Tags)」と「注釈付タグ(Annotated Tags)」の2種類があり、以下のような違いがあります。

比較項目軽量タグ注釈付きタグ
作成コマンドgit tag <tagname>git tag -a <tagname> -m "tag message"
追加情報タグ名のみタグ名、作成者、日時、メッセージ
主な用途一時的なマーカー、個人用リリースやマイルストーンなどの重要なポイント
ユースケース個人的な作業チーム全体で共有するタグ

表が示すように、2種類のタグは作成する際のコマンドにより分けられ、git showでタグを指定した際の表示内容が異なります。軽量タグの場合はコミットIDを指定した時と比べてタグ名が追加されるだけですが、注釈付タグの場合はタグの作成者や日時、メッセージが含まれることになります。

タグ付けの実行例

軽量タグを付与した場合、通常のgit show コミットID と結果が変わりません。

$ git tag v1.0.0
$ git show v1.0.0
commit a1b2c3d48886g7h8i9j0k1l2m3n4o5p6q7r8s9t0 (tag: v1.0.0, main)
Author: Fred <fred@example.com>
Date:   Tue May 1 10:30:00 2024 +0900

    Commit Message

diff --git a/sample.txt b/sample.txt
...

注釈付きタグを付与した場合、最初にタグの情報が表示されます。

$ git tag -a v2.0.0 -m "2024-05-04 Major release(タグのメッセージ)"
$ git show v2.0.0
tag v2.0.0
Tagger: Fred <fred@example.com>
Date:   Sat May 4 11:00:00 2024 +0900

2024-05-04 Major release(タグのメッセージ)

commit a1b2c3d48886g7h8i9j0k1l2m3n4o5p6q7r8s9t0
Author: Fred <fred@example.com>
Date:   Tue May 1 10:30:00 2024 +0900

    Commit Message

diff --git a/sample.txt b/sample.txt
...

タグの表示

付与したタグは、以下のようにオプションを付けずに実行することで確認できます。

git tag

「git tag」のオプション

git tagにはいくつかのオプションがあります。今回は以下をご紹介します。

  • -l / --list
  • -d
  • -f
  • -n
  • --tagsgit pushで使用)

-l / --list

git tag だけでも一覧表示はできますが、-lを使用することにより特定の文字にマッチしたタグを表示することができます。例で使用している「*(アスタリスク)」はワイルドカードと呼ばれ、任意の文字列に合致するという意味を持ちます。

# メジャーバージョンが「1」であるタグを表示する
git tag -l "v1.*"

v1.0.0
v1.0.1

-d

このオプションで、ローカルのタグを削除できます。

# v1.0.0のタグを削除
git tag -d v1.0.0

-f

タグは通常重複した名前を付けることができませんが、このオプションを使用することにより強制的に既存のタグを新たなコミットに付与し直すことができます。タグが移るため、過去にそのタグを付与されていたコミットからはそのタグがなくなります。

git tag -f v1.0.0

-n

タグ名だけでなく、注釈付きタグの場合はそのメッセージを表示してくれる便利なオプションです。軽量タグの場合は、タグのメッセージが存在しないためコミットのメッセージを表示します。また、指定した数字の行数分だけメッセージを表示します。(タグやコミットのメッセージが数行にわたる場合、行数を限定して表示できます。)

# 2行表示した場合
# タグ名と1行目のメッセージが同じ行に出力、コメントの2行目以降はその下の行に表示されます
git tag -n2

v1.0.0          2024.05.01
    [Release]

# 3行表示した場合
git tag -n3

v1.0.0          2024.05.01
    [Release]
    This release version is ....

--tags

リモートリポジトリにプッシュをする際に、ローカルにあるすべてのタグをプッシュするオプションです。

git push origin(リモート名) --tags

また、タグを一つずつプッシュするには以下のように行います。

git push origin v1.0.0

リモートにプッシュされたタグは、ブランチとは別の概念としてコミットに結びついています。GitHubを利用している場合、そのタグを「Release」として公開し、実行可能なバイナリファイルやリリースノートなどを追加してダウンロードすることができるようにする機能も存在します。

まとめ

この記事ではGitコマンドの中のgit tagについて学びました。git tagはコミットにタグ付けをして特定のバージョンやリリースポイントにマーキングをするのに役立ちます。リリースバージョンの管理やバグ修正時の特定バージョンの参照など、開発現場で活用できるシーンは多くあります。アノテーション付きタグと軽量タグの特徴を理解し、適材適所で使い分けていきましょう。この記事を参照しながら、ぜひgit tagを使いこなせるようになってください!

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事