メインコンテンツへスキップ
レッスン 9 / 15推定時間: 20

タグとリリース管理

バージョン管理の要となるタグの使い方と、効果的なリリース管理の方法を学びましょう

このレッスンの学習目標

  • Gitタグの種類と使い方を理解する
  • セマンティックバージョニングを実践する
  • リリースプロセスを体系化する

タグとは?

タグ(tag)は、特定のコミットに付ける永続的な目印です。主にリリースバージョンを記録するために使用されます。

なぜタグが重要?

📌 バージョンの明確化

  • 「どのコミットがv1.0.0なのか分からない」
  • 「本番環境で動いているバージョンが不明」
  • 「過去のリリースに戻したい」

📋 リリース履歴

  • 「いつ何をリリースしたか記録がない」
  • 「リリースノートを作成するのが大変」
  • 「バージョン間の差分が分からない」

タグの種類

1. 軽量タグ(Lightweight tag)

単純なポインタとして機能します。

# 軽量タグの作成
git tag v1.0.0

# 特定のコミットにタグ付け
git tag v1.0.0 abc1234

2. 注釈付きタグ(Annotated tag)推奨

タグ作成者、日時、メッセージを含む完全なGitオブジェクトです。

# 注釈付きタグの作成
git tag -a v1.0.0 -m "Release version 1.0.0"

# 詳細なメッセージを含める
git tag -a v2.0.0 -m "Release version 2.0.0

Major changes:
- New authentication system
- API v2 endpoints
- Performance improvements"

タグの基本操作

タグの作成と確認

# タグ一覧
git tag

# パターンでフィルタ
git tag -l "v1.*"

# タグの詳細情報
git show v1.0.0

# タグ付きコミットのログ
git log --oneline --decorate

タグの共有

# 特定のタグをプッシュ
git push origin v1.0.0

# すべてのタグをプッシュ
git push origin --tags

# タグを含めてプッシュ
git push --follow-tags

タグの削除

# ローカルのタグを削除
git tag -d v1.0.0

# リモートのタグを削除
git push origin --delete v1.0.0
# または
git push origin :refs/tags/v1.0.0

セマンティックバージョニング

バージョン番号の意味

v1.2.3
│ │ └─ パッチバージョン(バグ修正)
│ └─── マイナーバージョン(後方互換性のある機能追加)
└───── メジャーバージョン(後方互換性のない変更)

バージョニングルール

# パッチリリース(バグ修正)
v1.0.0 v1.0.1

# マイナーリリース(新機能)
v1.0.1 v1.1.0

# メジャーリリース(破壊的変更)
v1.1.0 v2.0.0

# プレリリース
v2.0.0-alpha.1
v2.0.0-beta.1
v2.0.0-rc.1

リリースプロセス

1. リリース準備

# リリースブランチの作成
git checkout -b release/v1.2.0 develop

# バージョン番号の更新
# package.json, pom.xml, version.py など
echo '{"version": "1.2.0"}' > package.json
git add package.json
git commit -m "chore: Bump version to 1.2.0"

2. リリースノートの作成

# 前回のリリースからの変更を確認
git log v1.1.0..HEAD --oneline

# 変更をカテゴリ別にまとめる
git log v1.1.0..HEAD --grep="^feat" --oneline  # 新機能
git log v1.1.0..HEAD --grep="^fix" --oneline   # バグ修正
git log v1.1.0..HEAD --grep="^docs" --oneline  # ドキュメント

3. タグ付けとマージ

# mainにマージ
git checkout main
git merge --no-ff release/v1.2.0

# タグを作成
git tag -a v1.2.0 -m "Release v1.2.0

Features:
- Add user profile page
- Implement dark mode

Bug fixes:
- Fix login timeout issue
- Resolve memory leak in dashboard

See CHANGELOG.md for details"

# developにもマージ
git checkout develop
git merge --no-ff release/v1.2.0

高度なタグ管理

GPG署名付きタグ

# GPG署名付きタグの作成
git tag -s v1.0.0 -m "Signed release v1.0.0"

# 署名の検証
git tag -v v1.0.0

タグからのブランチ作成

# 過去のリリースから修正ブランチを作成
git checkout -b hotfix/v1.0.1 v1.0.0

実践演習

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

リリース自動化

GitHub Actionsでの自動リリース

# .github/workflows/release.yml
name: Release
on:
  push:
    tags:
      - 'v*'

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      
      - name: Create Release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          body: |
            See [CHANGELOG.md](CHANGELOG.md) for details
          draft: false
          prerelease: false

リリースノート自動生成

#!/bin/bash
# generate-release-notes.sh

LAST_TAG=$(git describe --tags --abbrev=0)
NEW_TAG=$1

echo "# Release $NEW_TAG"
echo
echo "## Features"
git log $LAST_TAG..HEAD --grep="^feat" --pretty="- %s"
echo
echo "## Bug Fixes"
git log $LAST_TAG..HEAD --grep="^fix" --pretty="- %s"
echo
echo "## Other Changes"
git log $LAST_TAG..HEAD --grep -v "^feat\|^fix" --pretty="- %s"

ベストプラクティス

1. タグの命名規則

# プロダクションリリース
v1.0.0
v2.1.3

# プレリリース
v1.0.0-alpha.1
v1.0.0-beta.2
v1.0.0-rc.1

# 内部バージョン
internal/v1.0.0-sprint23

2. リリースチェックリスト

  • すべてのテストが通る
  • ドキュメントが更新されている
  • CHANGELOGが更新されている
  • バージョン番号が更新されている
  • リリースノートが準備されている

3. ロールバック戦略

# 問題があった場合のロールバック
git checkout v1.0.0  # 前のバージョンに戻る
git checkout -b hotfix/v1.0.1  # 修正ブランチを作成

まとめ

タグとリリース管理は、プロジェクトの成長と安定性にとって重要です。セマンティックバージョニングに従い、一貫したリリースプロセスを確立することで、チームとユーザーの両方に価値を提供できます。

次のレッスンでは、Gitの履歴を操作する「履歴の書き換えと危険性」について学びます。

さらに学習を続けるには

素晴らしい学習ペースです!次のレッスンに進むには、無料会員登録をお願いします。無料会員では各コース3レッスンまで学習できます。

無料で続きを学ぶ

各コース3レッスンまで学習可能

学習進捗の自動保存

コース修了証明書の発行