gitコマンドの使い方 ~ git tag ~

2020年4月15日git-command

git tag コマンド概要

タグ(tag)とは特定のcommitに名前を付けたものです。

リリースのタイミングで付与するなどの利用方法があります。

git tagはタグに対して以下の操作をするコマンドです。

  • タグ(tag)の表示
  • タグ(tag)の作成
  • タグ(tag)の削除
  • リモートリポジトリにタグ(tag)を作成
  • リモートリポジトリのタグ(tag)を削除

タグ(tag)の表示

タグ(tag)の一覧の表示する

git tag

ローカルリポジトリのタグ(tag)の一覧を表示します。

(master)
$ git log --oneline --all
ef0bed4 (HEAD -> master, tag: tag-2) commit-C
21fa0ab (tag: tag-1) commit-B
40d74e9 commit-A

(master)
$ git tag
tag-1
tag-2

タグの注釈や作成者、作成日を表示する

git show [tag-name]

タグの注釈や作成者、作成日を表示する

(master)
$ git show tag-2
tag tag-2
Tagger: snow <snow@abc.com>
Date:   Wed Apr 15 17:46:35 2020 +0900

version 2.0.0

commit ef0bed46cdeaaaea5be9d16d08a5d672cf0eedf4 (HEAD -> master, tag: tag-2)
Author: snow <snow@abc.com>
Date:   Wed Apr 15 17:39:37 2020 +0900

    commit-C

diff --git a/file-C.txt b/file-C.txt
new file mode 100644
index 0000000..b2a7546
--- /dev/null
+++ b/file-C.txt
@@ -0,0 +1 @@
+ccc

git showコマンドでタグ(tag)を指定すると、タグに関する情報が表示されます。

また、タグ情報の後にcommitに関する情報が表示されます。

タグ(tag)の作成

注釈なしのタグ(tag)を作成する

git tag [tag-name]

注釈、作成者、作成日のないタグ(tag)を作成します。

(master)
$ git tag tag-1

(master)
$ git tag
tag-1

(master)
$ git show tag-1
commit 21fa0abc940add43d761981ef5da628938dd2053 (tag: tag-1)
Author: snow <snow@abc.com>
Date:   Wed Apr 15 16:29:03 2020 +0900

    commit-B

diff --git a/file-B.txt b/file-B.txt
new file mode 100644
index 0000000..f761ec1
--- /dev/null
+++ b/file-B.txt
@@ -0,0 +1 @@
+bbb

git show コマンドでタグ(tag)を指定しても、タグの注釈などは表示されずにcommitに関する情報のみ表示されていますね。

注釈ありのタグ(tag)を作成する

git tag -a [tag-name]

git tag [tag-name] -am 'tag-comment'

-aオプションを指定すると注釈、作成者、作成日を含めたタグが作成されます。

また、-mオプションを同時に指定することで注釈を設定することもできます。

-mオプションを指定しない場合は、vimエディタが起動し入力を行います。

 

-aオプションの例

(master)
$ git tag -a tag-1

vimエディタが起動します。


#
# Write a message for tag:
#   tag-1
# Lines starting with '#' will be ignored.

注釈を入力して終了します。

ここでは「tag comment」と入力しました。

(master)
$ git show tag-1
tag tag-1
Tagger: snow <snow@abc.com>
Date:   Wed Apr 15 19:04:26 2020 +0900

tag comment

commit ef0bed46cdeaaaea5be9d16d08a5d672cf0eedf4 (HEAD -> master, tag: tag-1)
Author: snow <snow@abc.com>
Date:   Wed Apr 15 17:39:37 2020 +0900

    commit-C

diff --git a/file-C.txt b/file-C.txt
new file mode 100644
index 0000000..b2a7546
--- /dev/null
+++ b/file-C.txt
@@ -0,0 +1 @@
+ccc

git showコマンドで確認すると入力した注釈が表示されていますね。

-amオプションの例

(master)
$ git tag tag-2 -am 'tag am option comment'

(master)
$ git show tag-2
tag tag-2
Tagger: snow <snow@abc.com>
Date:   Wed Apr 15 19:12:57 2020 +0900

tag am option comment

commit ef0bed46cdeaaaea5be9d16d08a5d672cf0eedf4 (HEAD -> master, tag: tag-2, tag: tag-1)
Author: snow <snow@abc.com>
Date:   Wed Apr 15 17:39:37 2020 +0900

    commit-C

diff --git a/file-C.txt b/file-C.txt
new file mode 100644
index 0000000..b2a7546
--- /dev/null
+++ b/file-C.txt
@@ -0,0 +1 @@
+ccc

git showコマンドで確認すると入力した注釈が表示されていますね。

commitを指定してタグ(tag)を作成する

git tag [tag-name] [commit-hash | branch-name]

HEAD以外のcommitでタグ(tag)を作成したい場合はタグ名の後にcommit-hashやブランチ名を指定することで、特定のcommitのタグ(tag)を作成できます。

 

例として、「21fa0ab」のcommit-hashのcommitにtagを作成します。

(master)
$ git log --oneline --all
ef0bed4 (HEAD -> master) commit-C
21fa0ab commit-B
40d74e9 commit-A

(master)
$ git tag tag-1 21fa0ab

(master)
$ git tag
tag-1

(master)
$ git log --oneline --all
ef0bed4 (HEAD -> master) commit-C
21fa0ab (tag: tag-1) commit-B
40d74e9 commit-A

タグ(tag)の削除

指定したタグ(tag)を削除する

git tag -d [tag-name]

例.2つのタグ(tag-1とtag-2)が作成されている状態からtag-2を削除します

(master)
$ git tag
tag-1
tag-2

(master)
$ git tag -d tag-2
Deleted tag 'tag-2' (was ef0bed4)

(master)
$ git tag
tag-1

リモートリポジトリにタグ(tag)を作成

以下の図のようにremote-repository(リモートリポジトリ)側にタグ(tag)を作成する方法については、git tagコマンドではなくgit pushコマンドを利用します。

 

git push [remote-repository] [local-tag-name]:[remote-tag-name]

例として図の通りtag-1をremote-repository(リモートリポジトリ)側に作成してみましょう。

(master)
$ git log --oneline --all
ef0bed4 (HEAD -> master, tag: tag-1, origin/master) commit-C
21fa0ab commit-B
40d74e9 commit-A

(master)
$ git push origin tag-1:tag-1
Enumerating objects: 1, done.
Counting objects: 100% (1/1), done.
Writing objects: 100% (1/1), 158 bytes | 158.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To https://github.com/xxx/tag-test.git
 * [new tag]         tag-1 -> tag-1

remote-repository側でtag-1が作成されているかGitHubなどで確認してみましょう。

 

また、local-repositoryとremote-repositotyでタグ(tag)名を同じでよい場合は、次のようにremote-repository側のタグ(tag)名を省略できます。

git push [remote-repository] [local-tag-name]

先ほどと同じ操作を行ってみると、

(master)
$ git log --oneline --all
ef0bed4 (HEAD -> master, tag: tag-1, origin/master) commit-C
21fa0ab commit-B
40d74e9 commit-A

(master)
$ git push origin tag-1
Enumerating objects: 1, done.
Counting objects: 100% (1/1), done.
Writing objects: 100% (1/1), 158 bytes | 158.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To https://github.com/xxx/tag-test.git
 * [new tag]         tag-1 -> tag-1

同じ結果になりましたね。

リモートリポジトリにタグ(tag)を削除

remote-repository(リモートリポジトリ)側のタグ(tag)を削除する場合も作成する場合と同様にgit pushコマンドを用います。

git push [remote-repository] :[remote-tag-name]

タグ(tag)を作成する場合と異なる点は、local-remository側のtagを指定しないことです。

空のタグをremote側にpushするというイメージです。

(master)
$ git push origin :tag-1
To https://github.com/xxx/tag-test.git
 - [deleted]         tag-1

git tag の全てのオプションを確認する方法

以下のコマンドを実行するとブラウザでgit tagのヘルプページが表示される

git tag --help

Gitコマンドの使い方一覧

git-command

Posted by snow