バナー画像

GitHubのtag機能についてまとめています。

GitHubのtagはコミットにタグ付けする機能

GitHubのtagは、コミットに対して名前(タグ名)をつけられるという機能です。実際には、タグ名にバージョン番号をつけ、「この時点でのコミットでバージョン1.0とする」というふうに、コミットにバージョン名をつける目的で使われているケースが多いようです。

以下はGoogleのりポジトリ・material-design-iconsです。Tagsのページではバージョン名をつけられたタグの一覧が表示され、それぞれのtagのNotes、zip形式やtar.tgz形式でのソースコードがダウンロードできるようになっています。

【関連記事】
GitHubのダウンロード zip形式やgit cloneでのリポジトリ複製


関連)Tags · google/material-design-icons

GitHubのtagの使い方

tagをつけるときは、特定のコミット名を指定します。

git tag -a <タグ名> -m '<コメント>' <コミット名>

コミット名は、git logコマンドで一覧を確認できます。以下は、コミット名と内容を1行表示するコマンドの例です。

$ git log --oneline
b3f05bfbf4 (HEAD, tag: 4.0.0) Merge pull request #1055 from google/restructure
4ea68aa743 Add assets that existing in only a subset of the stylistic sets
c0935ae74a Include icons that do not exist in all sets
f69adfd4fe Add ability to fetch fonts
18e03aadb9 Add fonts
c3b145e921 png, ios assets
e577505fdb Add rules to fetch ios and png assets
 :
 :

以下のコマンドは、コミット名18e03aadb9に、タグ「testtag」をつけ、コメントに「this is test」を付与します。

$ git tag -a testtag -m 'this is test' 18e03aadb9

付与したタグは、git showにて内容の確認が可能。コミットの内容に加えて、tag付けをしたユーザの情報とtagのコメントが確認できます。

$ git show testtag
tag testtag
Tagger: user1 <user1@mydomain.com>
Date:   Wed Jun 23 06:53:19 2021 +0900

this is test

commit 18e03aadb91dd655d1e43a5911d82d1d2eeacfd7 (tag: testtag, tag: show)
Author: rsheeter <rsheeter@google.com>
Date:   Tue Aug 18 21:00:06 2020 -0700
 :

コミットを指定せずにgit tagを実行すると、現在のブランチの最新のコミットに対して付与されます。

git tag -a タグ名 -m 'タグコメント'

-mを省略して、コメントなしでタグを付けることも可能。

git tag -a 4.1.0

その場合、ターミナルでテキストエディタが起動するので、メッセージを書き込み保存します。以下のように#の行が自動的に表示されるので、その下にコメントを記入して保存します。

#
# Write a message for tag:
#   4.1.0
# Lines starting with '#' will be ignored.
バージョン4.1.0のタグです。

リポジトリ内で使用しているtagは、git tagで一覧表示できます。

$ git tag
1.0.0
1.0.0-pre
1.0.1
1.0.2
1.0.2b
2.0
2.0.0
2.1
2.1.1
2.2.0
2.2.1
2.2.2
2.2.3
3.0.0
3.0.1
3.0.2
4.0.0
v2.1.3

tagがあまりにも多い場合など、-lオプションでワイルドカード指定すると、tag名を絞り込み表示できます。

$ git tag -l '1.*'
1.0.0
1.0.0-pre
1.0.1
1.0.2
1.0.2b

tag 1.0.0のコミット内容を確認するには、以下を実行します。

$ git show 1.0.0
commit c4edaa75d05f23ae1bed7110fd3b9d5d26e828e5 (tag: 1.0.0)
Author: Addy Osmani <addyosmani@gmail.com>
Date:   Fri Oct 17 12:10:30 2014 +0100

    Link to stable & bleeding-edge releases

diff --git a/README.md b/README.md
index 175a84105b..2f4edb9d41 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 :
 :

付与したtagを削除するには、git tag -dを使用します。

$ git tag -d 4.1.0
Deleted tag '4.1.0' (was a1031c4e28)

tagを付与してから、pushすると、GitHubにタグ反映されます。特定のタグのみをpushすることも可能です。

// 特定のタグだけ
git push origin [タグ名]
// プッシュされていない全てのタグ
git push origin --tags

tagが反映されると、zipでダウンロードできるようになります。また、git cloneの-bオプションでタグを指定し、特定のタグのクローンも可能です。以下は、google/material-design-iconsリポジトリのtag 4.0.0をクローンしている例です。

$ git clone https://github.com/google/material-design-icons.git -b 4.0.0
Cloning into 'material-design-icons'...
remote: Enumerating objects: 873844, done.
remote: Counting objects: 100% (2/2), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 873844 (delta 0), reused 1 (delta 0), pack-reused 873842
Receiving objects: 100% (873844/873844), 188.45 MiB | 2.74 MiB/s, done.
Resolving deltas: 100% (108092/108092), done.
Note: checking out 'b3f05bfbf4329a5b63f50a720f867c2bac163f98'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

Checking out files: 100% (316570/316570), done.

最新以外のtagを指定してgit cloneを実行すると、過去のコミットをチェックアウトした状態となり、You are in ‘detached HEAD’…というメッセージが出力されます。

関連)Git の ‘detached HEAD’ 状態とその注意点 – yu8mada

GitHubのtagのまとめ

ポテパンダの一言メモ
  • GitHubのtagは、指定したコミットに名前をつける機能
  • 多くのリポジトリでは、tag名=バージョンとして使っているケースが多い
  • tag名をつけたコミットは、zipやtar.tgzでのダウンロードのほか、tag指定してgit cloneが可能になる

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。