Git tagとは?タグの作成・削除・プッシュ方法を初心者向けに完全解説
Git tagの基本的な使い方から実践的な活用方法まで初心者向けに解説します。軽量タグと注釈付きタグの違い、タグの作成・削除・プッシュ方法、セマンティックバージョニングを使ったバージョン管理の方法を学びましょう。
Git tagとは
Git tagは、特定のコミットに名前を付けて目印にする機能です。主にソフトウェアのリリースバージョン(v1.0.0、v2.1.0など)を記録するために使われます。
ブランチとは異なり、タグは一度付けると移動しません。そのため、「このコミットがバージョン1.0.0のリリース」という記録を永続的に残せます。
タグの種類
Gitには2種類のタグがあります。
| 種類 | 特徴 | 用途 |
|---|---|---|
| 軽量タグ(lightweight) | コミットへの単純なポインタ | 一時的な目印、ローカルでの利用 |
| 注釈付きタグ(annotated) | 作成者、日付、メッセージを含む | リリースバージョン、共有用 |
リリースバージョンには注釈付きタグを使うことが推奨されています。
タグの作成方法
注釈付きタグを作成する
-aオプションを使って注釈付きタグを作成します。-mでメッセージを指定できます。
# 注釈付きタグを作成
git tag -a v1.0.0 -m "初回リリース"
# タグの詳細を確認
git show v1.0.0
git showの出力例:
tag v1.0.0
Tagger: Your Name <your.email@example.com>
Date: Mon Jan 6 10:00:00 2026 +0900
初回リリース
commit abc1234...
Author: Your Name <your.email@example.com>
Date: Mon Jan 6 09:30:00 2026 +0900
feat: 新機能を追加
注釈付きタグには、タグを作成した人(Tagger)、作成日時、メッセージが記録されます。
軽量タグを作成する
オプションなしでタグ名だけを指定すると、軽量タグが作成されます。
# 軽量タグを作成
git tag v1.0.0-beta
# 軽量タグの詳細(タグ情報なし、コミット情報のみ)
git show v1.0.0-beta
軽量タグは単なるポインタなので、タグ自体のメタ情報は保存されません。
過去のコミットにタグを付ける
特定のコミットを指定してタグを付けることもできます。
# コミットハッシュを指定してタグを付ける
git tag -a v0.9.0 -m "ベータ版リリース" abc1234
# コミット履歴を確認
git log --oneline
# abc1234 feat: 新機能を追加
# def5678 fix: バグ修正
リリースし忘れた過去のバージョンにタグを付ける場合に便利です。
タグの確認方法
タグ一覧を表示する
# すべてのタグを表示
git tag
# パターンで絞り込み
git tag -l "v1.*"
# タグとコミットメッセージを表示
git tag -n
出力例:
v0.9.0
v1.0.0
v1.0.1
v1.1.0
タグの詳細を確認する
# タグの詳細情報を表示
git show v1.0.0
# タグが指すコミットのハッシュを確認
git rev-parse v1.0.0
タグ付きのコミット履歴を表示する
# タグを含むログ表示
git log --oneline --decorate
# グラフ表示でタグを確認
git log --oneline --graph --all --decorate
出力例:
* abc1234 (HEAD -> main, tag: v1.0.0) feat: 新機能を追加
* def5678 fix: バグ修正
* ghi9012 (tag: v0.9.0) initial commit
タグをリモートにプッシュする
タグはデフォルトではgit pushでリモートに送信されません。明示的にプッシュする必要があります。
特定のタグをプッシュする
# 特定のタグをプッシュ
git push origin v1.0.0
すべてのタグをプッシュする
# すべてのタグをプッシュ
git push origin --tags
GitHubでは、プッシュしたタグは「Releases」セクションに表示され、リリースノートを追加できます。
タグの削除方法
ローカルのタグを削除する
# ローカルのタグを削除
git tag -d v1.0.0
リモートのタグを削除する
# リモートのタグを削除
git push origin --delete v1.0.0
# または
git push origin :refs/tags/v1.0.0
リモートのタグを削除しても、ローカルのタグは残ります。両方削除する場合は、両方のコマンドを実行してください。
タグをチェックアウトする
特定のタグのコードを確認したい場合は、チェックアウトできます。
# タグをチェックアウト
git checkout v1.0.0
ただし、タグをチェックアウトするとデタッチドHEAD状態になります。この状態でコミットを作成しても、どのブランチにも属しません。
# タグの状態を確認しつつ、作業用ブランチを作成
git checkout -b hotfix/v1.0.1 v1.0.0
リリースバージョンに対する修正を行う場合は、タグからブランチを作成することをおすすめします。
セマンティックバージョニング
タグでバージョン管理を行う際は、セマンティックバージョニング(SemVer)を使うことが一般的です。
| バージョン | 変更内容 | 例 |
|---|---|---|
| MAJOR | 後方互換性のない変更 | v1.0.0 → v2.0.0 |
| MINOR | 後方互換性のある機能追加 | v1.0.0 → v1.1.0 |
| PATCH | 後方互換性のあるバグ修正 | v1.0.0 → v1.0.1 |
バージョン番号の付け方
# 初回リリース
git tag -a v1.0.0 -m "初回リリース"
# バグ修正リリース
git tag -a v1.0.1 -m "ログイン画面のバグを修正"
# 新機能追加
git tag -a v1.1.0 -m "検索機能を追加"
# 破壊的変更を含むリリース
git tag -a v2.0.0 -m "APIの大幅な変更"
プレリリースタグ
正式リリース前のバージョンには、サフィックスを付けます。
| サフィックス | 用途 | 例 |
|---|---|---|
| -alpha | 開発初期段階 | v1.0.0-alpha |
| -beta | 機能完成、テスト中 | v1.0.0-beta |
| -rc | リリース候補 | v1.0.0-rc.1 |
# ベータ版
git tag -a v1.0.0-beta -m "ベータ版リリース"
# リリース候補
git tag -a v1.0.0-rc.1 -m "リリース候補1"
# 正式リリース
git tag -a v1.0.0 -m "正式リリース"
実践的な活用シーン
リリースワークフロー
一般的なリリースの流れを示します。
# 1. 最新の状態を確認
git status
git log --oneline -5
# 2. タグを作成
git tag -a v1.2.0 -m "新機能リリース: ダッシュボード機能を追加"
# 3. タグをプッシュ
git push origin v1.2.0
# 4. すべてのタグを確認
git tag -l
GitHubでのリリース作成
GitHubでは、タグをプッシュした後にリリースを作成できます。
# GitHub CLIでリリースを作成
gh release create v1.2.0 --title "v1.2.0" --notes "新機能: ダッシュボード機能"
# ドラフトとして作成
gh release create v1.2.0 --draft
# 変更履歴を自動生成
gh release create v1.2.0 --generate-notes
特定バージョンのコードを取得
過去のバージョンのコードを取得する場合:
# タグの一覧を取得
git fetch --tags
# 特定バージョンのコードで作業ブランチを作成
git checkout -b bugfix/v1.0.x v1.0.0
初心者が混乱しやすいポイント
タグとブランチの違い
タグとブランチはどちらもコミットを指すポインタですが、動作が異なります。
| 項目 | タグ | ブランチ |
|---|---|---|
| 移動 | しない(固定) | コミットごとに移動 |
| 用途 | バージョンの記録 | 開発の分岐 |
| コミット | 通常しない | 新しいコミットを追加 |
タグは特定のコミットに固定されたまま動きませんが、ブランチは新しいコミットが追加されると一緒に移動します。
タグはプッシュしないと共有されない
git pushだけではタグはリモートに送信されません。これは意図的な設計で、ローカルでのテスト用タグが誤って共有されるのを防いでいます。
# コミットだけがプッシュされる
git push origin main
# タグも一緒にプッシュする場合
git push origin main --tags
# または特定のタグだけプッシュ
git push origin v1.0.0
同じ名前のタグは作成できない
既に存在するタグと同じ名前のタグは作成できません。
git tag v1.0.0
# fatal: tag 'v1.0.0' already exists
タグを付け直す場合は、まず削除してから再作成します。
# ローカルのタグを削除
git tag -d v1.0.0
# 新しいコミットにタグを付け直す
git tag -a v1.0.0 -m "リリース"
# リモートにもプッシュ済みの場合
git push origin --delete v1.0.0
git push origin v1.0.0
ただし、すでにリモートにプッシュしたタグを変更すると、他のメンバーに混乱を招く可能性があります。可能であれば、新しいバージョン番号(v1.0.1など)を使うことをおすすめします。
軽量タグと注釈付きタグの使い分け
| 場面 | 推奨タグ |
|---|---|
| リリースバージョン | 注釈付きタグ(-a) |
| 一時的な目印 | 軽量タグ |
| チームで共有する | 注釈付きタグ(-a) |
| 個人的なメモ | 軽量タグ |
CI/CDツールやGitHubのリリース機能は、注釈付きタグの情報(作成者、日時、メッセージ)を活用できるため、リリース用途では注釈付きタグが適しています。
タグに関するよく使うコマンド一覧
| 操作 | コマンド |
|---|---|
| 注釈付きタグを作成 | git tag -a v1.0.0 -m "メッセージ" |
| 軽量タグを作成 | git tag v1.0.0 |
| 過去のコミットにタグ | git tag -a v1.0.0 -m "メッセージ" コミットハッシュ |
| タグ一覧を表示 | git tag または git tag -l |
| タグの詳細を表示 | git show v1.0.0 |
| タグをプッシュ | git push origin v1.0.0 |
| すべてのタグをプッシュ | git push origin --tags |
| ローカルタグを削除 | git tag -d v1.0.0 |
| リモートタグを削除 | git push origin --delete v1.0.0 |
| タグをチェックアウト | git checkout v1.0.0 |
まとめ
Git tagは、特定のコミットに名前を付けてバージョンを記録する機能です。
| 項目 | 内容 |
|---|---|
| 軽量タグ | 単純なポインタ、一時的な目印向け |
| 注釈付きタグ | メタ情報を含む、リリース向け |
| プッシュ | git push origin --tagsで明示的に送信 |
| バージョン形式 | セマンティックバージョニング(v1.0.0)が一般的 |
- リリースバージョンには注釈付きタグ(
-aオプション)を使う - タグは明示的にプッシュしないとリモートに反映されない
- セマンティックバージョニングでバージョン番号を管理する
- タグをチェックアウトするとデタッチドHEAD状態になる
タグを活用することで、ソフトウェアのリリース履歴を明確に管理できます。特にチーム開発では、リリースポイントを明確にすることで、バグの調査や過去バージョンの確認が容易になります。
編集部