22 標籤管理

2021-07-03 11:10:46 字數 2995 閱讀 5868

發布乙個版本時,我們通常先在版本庫中打乙個標籤,這樣,就唯一確定了打標籤時刻的版本。將來無論什麼時候,取某個

標籤的版本,就是把那個打標籤的時刻的歷史版本取出來。所以,標籤也是版本庫的乙個快照。

git的標籤雖然是版本庫的快照,但其實它就是指向某個commit的指標(跟分支很像對不對?但是分支可以移動,標籤不能移

動),所以,建立和刪除標籤都是瞬間完成的。

建立標籤

在git中打標籤非常簡單,首先,切換到需要打標籤的分支上:

$ git branch

* dev

master

$ git checkout master

switched to branch 'master'

然後,敲命令git tag name就可以打乙個新標籤:

$ git tag v1.0
可以用命令git tag檢視所有標籤:

$ git tag

v1.0

預設標籤是打在最新提交的commit上的。有時候,如果忘了打標籤,比如,現在已經是周五了,但應該在周一打的標籤沒有

打,怎麼辦?

方法是找到歷史提交的commit id,然後打上就可以了:

$ git log --pretty=oneline --abbrev-commit

6a5819e merged bug fix 101

cc17032 fix bug 101

7825a50 merge with no-ff

6224937 add merge

59bc1cb conflict fixed

400b400 & ******

75a857c and ******

fec145a branch test

d17efd8 remove test.txt

...

比方說要對「add merge」這次提交打標籤,它對應的commit id是「6224937」,敲入命令:

$ git tag v0.9

6224937

再用命令git tag檢視標籤:

$ git tag

v0.9

v1.0

注意,標籤不是按時間順序列出,而是按字母排序的。可以用git show tagname檢視標籤資訊:

$ git show v0.9

commit 622493706ab447b6bb37e4e2a2f276a20fed2ab4

author: michael liao date: thu aug 22

11:22:08

2013 +0800

add merge

...

可以看到,「v0.9」確實打在「add merge」這次提交上。

還可以建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字:

$ git tag

-a v0.1

-m"version 0.1 released"

3628164

用命令git show tagname可以看到說明文字:

$ git show v0.1

tag v0.1

tagger: michael liao date: mon aug 26

07:28:11

2013 +0800

version 0.1 released

commit 3628164fb26d48395383f8f31179f24e0882e1e0

author: michael liao date: tue aug 20

15:11:49

2013 +0800

...

還可以通過-s用私鑰簽名乙個標籤:

$ git tag

-s v0.2

-m"signed version 0.2 released" fec145a

簽名採用pgp簽名,因此,必須首先安裝gpg(gnupg),如果沒有找到gpg,或者沒有gpg金鑰對,就會報錯:

error: gpg failed to sign the data

error: unable to sign the tag

$ git show v0.2

tag v0.2

tagger: michael liao date: mon aug 26

07:28:33

2013 +0800

signed version 0.2 released

-----begin pgp signature-----

version: gnupg v1.4.12 (darwin)

iqecbaabagagbqjsgpmhaaojepuxhydahbpt4qqiakehfr3bo...

-----end pgp signature-----

commit fec145accd63cdc9ed95a2f557ea0658a2a6537f

author: michael liao date: thu aug 22

10:37:30

2013 +0800

branch test

...

用pgp簽名的標籤是不可偽造的,因為可以驗證pgp簽名。驗證簽名的方法比較複雜,這裡就不介紹了。

小結

命令git tag name用於新建乙個標籤,預設為head,也可以指定乙個commit id;

-a tagname -m 「blablabla…」可以指定標籤資訊;

-s tagname -m 「blablabla…」可以用pgp簽名標籤;

命令git tag可以檢視所有標籤;

GIt 22 操作標籤

如果標籤打錯了,也可以刪除 git tag d v0.1 deleted tag v0.1 was f15b0dd 因為建立的標籤都只儲存在本地,不會自動推送到遠端。所以,打錯的標籤可以在本地安全刪除。如果要推送某個標籤到遠端,使用命令 git push origin git push origin...

git 標籤管理

1.建立標籤 切換到需要打標籤的分支上 git branch git checkout master switch to branch master 然後git tag 就可以打乙個新標籤 git tag v1.02.檢視標籤資訊 git show v0.93.刪除本地標籤 git tag d v0...

十九 標籤管理

發布乙個版本時,我們通常先在版本庫中打乙個標籤 tag 這樣,就唯一確定了打標籤時刻的版本。將來無論什麼時候,取某個標籤的版本,就是把那個打標籤的時刻的歷史版本取出來。所以,標籤也是版本庫的乙個快照。git的標籤雖然是版本庫的快照,但其實它就是指向某個commit的指標 跟分支很像對不對?但是分支可...