git tagの注釈とは何か?メッセージとの違いや注釈をつける方法、変更・上書き方法を実例でわかりやすく解説(コミットメッセージとの違い)

git-prograshi(プロぐらし)-kv git/github
記事内に広告が含まれていることがあります。

Gitにはコミット履歴にタグを設定するgit tagコマンドが用意されています。その中のオプションの一つで注釈をつける機能があります。

ここでは、注釈とは何か?コミットメッセージとは違うのか?注釈を設定する方法や参照するにはどうすればいいか、既に注釈がついているタグの注釈を変更するにはどうすればいいかについてまとめています。


注釈とは何か?コミットメッセージの違い

注釈とはコミットに設定したタグにつけられる専用のメッセージのことです。

似たものに、コミットメッセージがありますが、コミットメッセージとは異なります

例えば、タグの一覧を参照するコマンドにgit tag -nがあります。これを実行すると、注釈が設定されていない場合は各タグとそれに対応するコミットメッセージが表示されます。

$ git tag -n
NewTag          [A]vue-router
v1.2            [A]vue-router
v2.0            [U]content-security-policy(CSP) enable webpack-dev-server
v2.1            [A]ClientNew.vue
v3.0            [U]docker-compose add webpack port 3035

上記のタグ名「NewTag」に注釈をつけると、コミットメッセージではなく注釈の内容が表示されるようになります。

$ git tag -n
NewTag          注釈を設定しました
v1.2            [A]vue-router
v2.0            [U]content-security-policy(CSP) enable webpack-dev-server
v2.1            [A]ClientNew.vue
v3.0            [U]docker-compose add webpack port 3035
point

注釈とはタグの内容をよりわかりやすくするために付けるメッセージ。コミットメッセージよりも優先して表示される。


リモートレポジトリにおける見え方の違い

注釈ありなしでリモートレポジトリでタグがどのように見えるかの違いは以下のようになります。

注釈が無い場合

注釈が無い場合、リモートレポジトリのタグは以下のように表示されます。

タグ名の横の「…」をクリックすると、コミットメッセージが表示されます。


注釈が有る場合

注釈が有る場合、リモートレポジトリのタグは以下のように表示されます。

デフォルトの見え方は注釈が無い場合と同じです。

ですが、タグ名の横の「…」をクリックすると、コミットメッセージではなく注釈が表示されます。


注釈をつけたタグを設定する方法

注釈の設定方法は、注釈なしでタグ名を指定するコードに「-a」オプションをつけるだけです。

(「-a」または「--annotate」オプションでも注釈をつけることができます。)

-aオプションの意味

-aは--annotateの省略形です。annotateは「注釈をつける」の意味です。

point

-(ハイフン)一つのオプションをショートオプション、-(ハイフン)が2つのオプションをロングオプションといいます。

ハイフン一つは省略形で、後ろに記号が一文字だけつきます。通常は省略形のショートオプションを使うのが一般的ですが、ロングオプションを使っても同じ処理になります。

git tag -a 

↑↓同じ

git tag --annotate


注釈を設定する方法

注釈を設定する方法は以下の3つがあります。

注釈を設定する方法
  1. エディタを起動する。
  2. コマンドライン上で直接注釈を入力する。「-a」と「-m」オプションを使う
  3. コマンドライン上で直接注釈を入力する。「-am」オプションを使う

以下でそれぞれの方法を実例で解説します。

エディタを起動する場合

エディタを起動する場合は-aオプションを付けて、タグ名を指定します。

git tag -a <タグ名> <コミット>
補足

オプションを指定する場所はタグ名の前である必要性はありません。以下でも同様の処理になります。

git tag <タグ名> -a <コミット>

↑↓ 同じ

git tag -a <タグ名> <コミット>

↑↓ 同じ

git tag <タグ名> <コミット> -a


実例

例えば、現在のブランチの最新のコミットに「v1.0」というタグ名をつけて、注釈をエディタで設定する場合は以下のようになります。

$ git tag v1.0 -a

VSCodeを使う場合は以下のようなエディタが起動します。

セーブして、閉じれば処理は完了です。

以下のようなメッセージが表示されますが、問題なく作業できます。

hint: Waiting for your editor to close the file... [0126/111345.264:ERROR:registration_protocol_win.cc(102)] CreateFile: 指定されたファイルが見つかりません。 (0x2)


コマンドライン上で直接注釈を入力する。「-a」と「-m」オプションを使う

注釈を設定する2つ目の方法は、「-a」と「-m」オプションを使って、コマンドライン上で直接注釈を入力するものです。

git tag -a <タグ名> -m "注釈の内容" <コミット>

-mオプションは--messageのショートオプションで、注釈の内容(メッセージ)を指定できます。

補足

オプションを指定する場所はタグ名の前である必要性はありません。以下でも同様の処理になります。

git tag <タグ名> -a <コミット>

↑↓ 同じ

git tag -a <タグ名> <コミット>

↑↓ 同じ

git tag <タグ名> <コミット> -a


実例

コミット番号「00093d1」にタグ名「v0.1」で注釈「注釈の内容」というメッセージを付ける場合は以下のようになります。

$ git tag v0.1 -a -m "注釈の内容" 00093d1

確認すると、正しく注釈が設定されていることがわかります。

$ git tag -n "v0.1"
v0.1            注釈の内容

またはgit logで履歴を参照

$ git log --oneline
00093d1 (tag: v0.1) [F]ClientNewからClientForm.vueを切り出し


コマンドライン上で直接注釈を入力する。「-am」オプションを使う

注釈を設定する3つ目の方法は、「-am」オプションを使って、コマンドライン上で直接注釈を入力するものです。

ハイフン一つのショートオプションでは複数のショートオプションをつなげることができます。

「-am」は「-a」「-m」と同じです。

git tag <タグ名> -am "注釈の内容" <コミット>


実例

コミット番号「00093d1」にタグ名「v0.2」で注釈「注釈の内容2」というメッセージを付ける場合は以下のようになります。

$ git tag v0.2 -am "注釈の内容2" 00093d1

確認すると、正しく注釈が設定されていることがわかります。

$ git tag -n "v0.2"
v0.2            注釈の内容2

またはgit logで履歴を参照

$ git log --oneline
00093d1 (tag: v0.2, tag: v0.1) [F]ClientNewからClientForm.vueを切り出し


注釈を変更する方法

既にある注釈の内容を変更したい場合は、注釈をつけたタグを強制的に上書きします。

git tag -f <タグ名> -am "注釈の内容" <コミット>

-fオプションはタグを強制的に上書きするオプションです。


実例

以下のようにtag名「v0.2」注釈の内容「注釈の内容2」となっている注釈を「注釈の内容を変更しました」に変えます。

$ git log --oneline
00093d1 (tag: v0.2) [F]ClientNewからClientForm.vueを切り出し
$ git tag -n "v0.2"
v0.2            注釈の内容2


コミット番号を指定してタグを上書きします。

$ git tag -f v0.2 -am "注釈の内容を変更しました" 00093d1
Updated tag 'v0.2' (was 187cd03)

注釈の内容を確認すると、正しく変更されていることがわかります。

$ git tag -n "v0.2"
v0.2            注釈の内容を変更しました


注意点

注釈を上書きするときのコミットの指定にタグ名は使用できません。

実例

例えば、タグv0.2の内容を修正するときに、対象のコミットとして「v0.2」は指定できません。

$ git tag -f v0.2 -am "注釈の内容を変更しました" v0.2

以下のようなエラーが表示されます。

hint: You have created a nested tag. The object referred to by your new tag is
hint: already a tag. If you meant to tag the object that it points to, use:
hint:
hint:   git tag -f v0.2 v0.2^{}
hint: Disable this message with "git config advice.nestedTag false"


タイトルとURLをコピーしました