Git tag タグ名の一般的なルール(命名規則)と例
Gitでtagを使ってバージョン名を付けようとして、名前に迷った人向け。
セマンティックバージョニング
バージョンの付け方で調べてまず出てくるものといえばセマンティックバージョニングです。Gitのtagにもこの考え方が適用できるでしょう。
概要:
-
1.0.0のように<メジャーバージョン>.<マイナーバージョン>.<パッチバージョン>とします - 開発版は
0.1.0から、正式版は1.0.0から始めます - バグ修正ではパッチバージョンを、機能性の追加ではマイナーバージョンを、後方互換性を持たない変更ではメジャーバージョンを上げます
- プレリリースバージョンは
1.0.0-alpha,1.0.0-alpha.1,1.0.0-0.3.7,1.0.0-x.7.z.92のように-<ドットで区切られた識別子>を付加します。これらの例は1.0.0よりも前のバージョンであることを表します。プレリリースバージョンは早い順に1.0.0-alpha<1.0.0-alpha.1<1.0.0-alpha.beta<1.0.0-beta<1.0.0-beta.2<1.0.0-beta.11<1.0.0-rc.1<1.0.0のようになります
タグ名の付け方
タグは、先頭に「v」を付けて v1.0.0 のようにすることが一般的です。バージョン部分は、セマンティックバージョンを採用すると良いでしょう。
『v1.2.3』はセマンティック バージョンでしょうか?
いいえ、『v1.2.3』はセマンティック バージョンではありません。しかしながら、セマンティック バージョンに接頭辞の『v』を付けるのは英語ではバージョン番号であることを示す一般的な方法です。バージョン管理では、『バージョン』を『v』と略すことがよくあります。たとえば git tag v1.2.3 -m "Release version 1.2.3" では『v1.2.3』はタグ名であり、セマンティック バージョンは『1.2.3』です。
タグ名の例
いくつかのGitHubリポジトリで使用されているタグを例示します。
git
v2.46.0
v2.46.0-rc2
v2.46.0-rc1
v2.46.0-rc0
v2.45.2
v2.44.2
v2.43.5
https://github.com/git/git/tags
vscode
1.92.2
1.92.1
1.92.0
1.91.1
1.91.0
https://github.com/microsoft/vscode/tags
python/cpython
v3.12.5
v3.13.0rc1
v3.13.0b4
v3.13.0b3
v3.12.4
v3.13.0b2
v3.13.0b1
v3.13.0a6
v3.12.3
https://github.com/python/cpython/tags
rails
v7.1.2
v7.1.1
v7.1.0
v7.1.0.rc2
v7.1.0.rc1
v7.1.0.beta1
v7.0.8
v7.0.7.2
v7.0.7.1
v6.1.7.6
https://github.com/rails/rails/tags
nodejs/node
v21.7.3
v20.12.2
v18.20.2
v21.7.2
v20.12.1
https://github.com/nodejs/node/tags
tensorflow
v2.17.0
v2.17.0-rc1
v2.16.2
v2.17.0-rc0
v2.15.1
v2.16.1
https://github.com/tensorflow/tensorflow/tags
kubernetes
v1.31.0
v1.31.0-rc.1
v1.32.0-alpha.0
v1.31.0-rc.0
v1.27.16
v1.31.0-beta.0
v1.30.3
https://github.com/kubernetes/kubernetes/tags
mastodon
v4.3.1
v4.3.0
v4.3.0-rc.1
v4.2.13
v4.1.20
v4.3.0-beta.2
v4.3.0-beta.1
v4.2.12
https://github.com/mastodon/mastodon/tags
余談:beta1よりbeta.1が良い?
少し細かい話ですが、セマンティックバージョニングの例では 1.0.0-beta1 ではなく 1.0.0-beta.1 が使用されています。ピリオドはあった方が良いのでしょうか?
ピリオドを入れる理由には以下の2つが挙げられると思います。
- 方針的な問題として、ピリオドが識別子を区切るので、
beta.1と書くことによってbetaというカテゴリの1番であることを示したいため。一方でbeta1はbeta1というカテゴリであり、beta2とは異なるカテゴリのような表現になるため -
beta2とbeta10では順番が機械的に正しく評価できないため
優先度は、各識別子を左から右に比較して最初の違いによって評価します。
逆に言えば、数字が1桁を超えないならば beta1 でも実害はなさそうです。
Discussion