Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【git】git tagで特定のリビジョンにタグを打つ

git tag

git tag コマンドを使うことで、特定のリビジョンに対してタグを付加することができます。
リビジョンに付加したタグはリビジョンのエイリアスとして使うことができます。

Usage

git tag [タグ名]だけで、HEADが指すリビジョンにタグを付けることができます。

# branchの状態
$ git branch
* branch1
  branch2
  master

# 現在のリビジョンにタグをつける
$ git tag testtag

# タグ一覧
$ git tag
test1.0
testtag

タグを付けたリビジョンに対して、git diffgit checkout等を使うことができます。

# ex1. タグをつけたリビジョンとの差分
$ git diff master testtag

diff --git a/hoge1.txt b/hoge1.txt
index 6339dc3..0ef7e93 100644
--- a/hoge1.txt
+++ b/hoge1.txt
@@ -1,10 +1 @@
-fuga
-
-hoge
-hoge
 piyo
-foo
-hogehoge
-fugafuga
-
-fugafuga
diff --git a/hoge2.txt b/hoge2.txt
deleted file mode 100644
index 1a57997..0000000
--- a/hoge2.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-hoge
-fuga
-piyo

# ex2. タグをつけたリビジョンへのcheckout
$ git checkout testtag
Note: checking out 'testtag'.

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>

HEAD is now at df7c41a... modify hoge1.txt

タグを利用した削除後ブランチの追跡

タグ付けられたリビジョンを持つブランチを削除しても、タグ自体は削除されません。
そのためgit checkout [タグ名]に削除されたブランチ上のリビジョンへのタグを指定することで、 既に削除されてしまったブランチの履歴を追跡することができます。

# 'testtag'タグを作成したブランチを削除
$ git branch -D branch1
Deleted branch branch1 (was df7c41a).

# チェックアウト可能
$ git checkout testtag 
Note: checking out 'testtag'.

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>

HEAD is now at df7c41a... modify hoge1.txt

ブランチは残したくはないがある時点でのリポジトリ履歴を残しておきたい場合や、
ブランチのバックアップを残しておきたい場合などにこの機能を使うと便利です。