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
のようになります
タグ名の付け方
タグは、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
余談: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