GitでTagを使ってみよう!!
Gitのコミットはそれぞれハッシュ値を持っていますが、長い英数字の羅列ではどのコミットを示しているのか分かりづらく、コマンドに指定するのも大変です。そこでタグを使うと、コミットに分かりやすい名前(v1.0やRelease1など)を付けられ、重要なポイントを簡単に識別できるようになります。
タグの種類
Gitのタグには主に3種類あります:
-
軽量タグ(Lightweight Tag)
- 単純にコミットへのポインタ
- コミットのハッシュ値に名前をつけるだけの簡易なもの
- 追加情報は保存されない
- ローカルでの一時的な目印に適している
-
注釈付きタグ(Annotated Tag)
- Git内部に完全なオブジェクトとして保存される
- タグ作成者の情報、日付、メッセージなどのメタデータを含む
- リリースバージョンなど公式なマーキングに推奨される
-
署名付きタグ(Signed Tag)
- 注釈付きタグにGPG署名を追加したもの
- タグの作成者の身元を暗号学的に検証できる
- タグが改ざんされていないことを保証
- セキュリティが重要なプロジェクトで使用される
タグの作成方法
軽量タグの作成
git tag <タグ名>
例:
git tag v1.0.0
注釈付きタグの作成
git tag -a <タグ名> -m "<タグのメッセージ>"
例:
git tag -a v1.0.0 -m "バージョン1.0.0をリリース"
署名付きタグの作成
git tag -s <タグ名> -m "<タグのメッセージ>"
例:
git tag -s v1.0.0 -m "バージョン1.0.0の署名付きリリース"
注意: 署名付きタグを使用するには、事前にGPGキーの設定が必要です。
過去のコミットにタグを付ける
git tag <タグ名> <コミットのハッシュ値>
または注釈付き/署名付きタグの場合:
git tag -a/-s <タグ名> <コミットのハッシュ値> -m "<タグのメッセージ>"
例:
git tag -a v0.9.0 a87f54e -m "バージョン0.9.0"
タグの表示と確認
タグの一覧表示
git tag
パターンに一致するタグだけを表示:
git tag -l "v1.8.*"
タグの詳細情報を表示
ハッシュ値を用いてshow
コマンドを利用したときと同じ結果が出ます.
git show <タグ名>
例:
git show v1.0.0
署名付きタグの検証
git tag -v <タグ名>
例:
git tag -v v1.0.0
タグの共有とリモートでの操作
タグをリモートにプッシュ
特定のタグをプッシュ:
git push origin <タグ名>
すべてのタグをプッシュ:
git push origin --tags
リモートのタグを取得
git fetch --tags
タグの削除
ローカルのタグを削除
git tag -d <タグ名>
リモートのタグを削除
git push origin --delete <タグ名>
または:
git push origin :refs/tags/<タグ名>
タグをチェックアウト
特定のタグをチェックアウトして、そのバージョンのコードを見る:
git checkout <タグ名>
タグからブランチを作成してチェックアウト:
git checkout -b <ブランチ名> <タグ名>
署名付きタグの設定と利用
GPGキーの設定
署名付きタグを使用するには、まずGPGキーを生成し、Gitに登録する必要があります:
- GPGキーの生成(まだ持っていない場合):
gpg --gen-key
- キーのリスト表示と確認:
gpg --list-secret-keys --keyid-format LONG
- Gitにキーを登録:
git config --global user.signingkey <GPGキーID>
署名の検証
チームメンバーが署名を検証するためには、作成者の公開鍵をインポートする必要があります:
- 公開鍵をエクスポート(キーの作成者):
gpg --armor --export <メールアドレス> > public-key.asc
- 公開鍵をインポート(検証者):
gpg --import public-key.asc
- タグの検証:
git tag -v <タグ名>
タグの利用ケース
- リリースバージョンのマーキング:製品の公式リリース(v1.0、v2.0など)を明確に識別
- マイルストーンの記録:プロジェクトの重要な段階を記録
- バグ修正ポイントの識別:特定のバグが修正されたコミットをマーク
- セキュリティ更新の保証:署名付きタグを使って、セキュリティ更新の信頼性を保証
- ドキュメントのバージョン管理:ドキュメントの特定バージョンを参照可能に
タグの種類の選び方
- 軽量タグ:一時的な作業や個人的な参照用
- 注釈付きタグ:チーム内での共有や公式リリースに
- 署名付きタグ:セキュリティが重要な場合や、配布されるコードの信頼性保証に
タグを効果的に活用することで、コミット履歴をより理解しやすく管理でき、プロジェクトの重要なポイントを簡単に識別できるようになります!個人開発や小規模開発において、タグは不要と思われます、オープンソースプロジェクトや大規模チーム開発では、適切なタグ付けがプロジェクト管理の効率を大きく向上させます。