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を使いこなせるようになってください!

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

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

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

関連記事