[Git] 版本控制: 如何使用標籤(Tag)

Git Tag 功能就如同 Cvs Tag 是一樣的,您可以在專案裡面隨意新增 Tag,方便您紀錄訊息,底下一些基本的操作來學習如何使用標籤(Tag)功能(新增標籤、以及各種不同類型標籤之間的差別)。

列出既有標籤

直接使用 git tag 即可

1
2
3
$ git tag -l
v0.1
v1.3

如果整個專案過多 Tag 也可以透過底下方式搜尋出來

1
2
3
4
5
$ git tag -l 'v1.4.2.*'
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4

新增標籤

-a 就是標籤名稱,-m 代表該標籤說明

1
2
3
4
5
$ git tag -a v1.4 -m 'my version 1.4'
$ git tag
v0.1
v1.3
v1.4

可以使用 git show 來顯示該標先說明以及同時 commit 的資料

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
tag v1.0
Tagger: Bo-Yi Wu <appleboy.tw AT gmail.com>
Date:   Thu Nov 18 12:09:44 2010 +0800

PHP Plurk API version 1.6.2

commit a30c79cf2ebaf5a66ea79852ac195bc828552a2d
Author: Bo-Yi Wu <appleboy.tw AT gmail.com>
Date:   Fri Nov 12 13:51:29 2010 +0800

    update README and edit logs/index.htm

也可以針對很久以前 Commit 的資料進行標籤

1
2
3
4
5
6
7
$ git log --pretty=oneline
a30c79cf2ebaf5a66ea79852ac195bc828552a2d update README and edit logs/index.htm
77b54912cf6a21c96715b22c74694effed1b1f56 fixed: plurk cookie error
8ddb59176633e9e161835dcceaf453ee4f203bc3 update /API/Users/getKarmaStats
c7dffde325d8ab543f92286bb98c7263e52d6711 transfer tab to space
aa5a300028c3c34be034fc44c1a6caeeb43852e7 transfer tab to space
7c5f24d99e319d4300d3eade533f65ecbe1976dc update to 1.6.1

選擇您要的標籤

1
$ git tag -a v1.2 7c5f24d

上傳標籤到遠端

git push 並不會把標籤上傳到遠端,所以必須透過底下才行

1
2
3
4
5
6
7
$ git push origin v1.5
Counting objects: 50, done.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (44/44), 4.56 KiB, done.
Total 44 (delta 18), reused 8 (delta 1)
To git@github.com:schacon/simplegit.git
* [new tag]         v1.5 -> v1.5

如果在本機端很多標籤,利用 –tags 一次上傳上去

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ git push origin --tags
Counting objects: 50, done.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (44/44), 4.56 KiB, done.
Total 44 (delta 18), reused 8 (delta 1)
To git@github.com:schacon/simplegit.git
 * [new tag]         v0.1 -> v0.1
 * [new tag]         v1.2 -> v1.2
 * [new tag]         v1.4 -> v1.4
 * [new tag]         v1.4-lw -> v1.4-lw
 * [new tag]         v1.5 -> v1.5

遠端刪除標籤

只需要一行指令就可以了

1
git push origin :refs/tags/my_tag

如果是還沒有送到 remote Git repositories 上的,可以使用 git 指令刪除

1
git tag -d <tagname>

標籤其他功能

針對第 v2.5 跟其他 commits 名稱做比對

1
$ git diff v2.5 1b2e1d63ff

比較現在與 v2.5

1
$ git diff v2.5 HEAD 

開一個以 v.25 當作基底的 branch

1
$ git branch stable v2.5

搜尋 v.25 裡面是否有 hello 字串

1
$ git grep "hello" v2.5

觀看 v2.5 版本的 Makefile

1
$ git show v2.5:Makefile

See also