鍍金池/ 教程/ Java/ 創(chuàng)建標(biāo)簽
操作標(biāo)簽
多人協(xié)作
解決沖突
Git 的誕生
工作區(qū)和暫存區(qū)
搭建 Git 服務(wù)器
Bug 分支
配置別名
從遠(yuǎn)程庫克隆
分支
添加遠(yuǎn)程庫
分支管理策略
撤銷修改
安裝 Git
管理修改
生成 SSH key
GitHub
倉庫狀態(tài)
忽略特殊文件
刪除文件
Feature 分支
創(chuàng)建與合并分支
創(chuàng)建版本庫
創(chuàng)建標(biāo)簽
版本回退
集中式 vs 分布式

創(chuàng)建標(biāo)簽

發(fā)布一個版本時,我們通常先在版本庫中打一個標(biāo)簽,這樣,就唯一確定了打標(biāo)簽時刻的版本。將來無論什么時候,取某個標(biāo)簽的版本,就是把那個打標(biāo)簽的時刻的歷史版本取出來。所以,標(biāo)簽也是版本庫的一個快照。

Git 的標(biāo)簽雖然是版本庫的快照,但其實它就是指向某個 commit 的指針(跟分支很像對不對?但是分支可以移動,標(biāo)簽不能移動),所以,創(chuàng)建和刪除標(biāo)簽都是瞬間完成的。

在 Git 中打標(biāo)簽非常簡單,首先,切換到需要打標(biāo)簽的分支上:

$ git branch
* dev
  master
$ git checkout master
Switched to branch 'master'

然后,敲命令git tag <name>就可以打一個新標(biāo)簽:

$ git tag v1.0

可以用命令git tag查看所有標(biāo)簽:

$ git tag
v1.0

默認(rèn)標(biāo)簽是打在最新提交的 commit 上的。有時候,如果忘了打標(biāo)簽,比如,現(xiàn)在已經(jīng)是周五了,但應(yīng)該在周一打的標(biāo)簽沒有打,怎么辦?

方法是找到歷史提交的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 & simple
75a857c AND simple
fec145a branch test
d17efd8 remove test.txt
...

比方說要對add merge這次提交打標(biāo)簽,它對應(yīng)的commit id6224937,敲入命令:

$ git tag v0.9 6224937

再用命令git tag查看標(biāo)簽:

$ git tag
v0.9
v1.0

注意,標(biāo)簽不是按時間順序列出,而是按字母排序的??梢杂?code>git show <tagname>查看標(biāo)簽信息:

$ git show v0.9
commit 622493706ab447b6bb37e4e2a2f276a20fed2ab4
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Thu Aug 22 11:22:08 2013 +0800

    add merge
...

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

還可以創(chuàng)建帶有說明的標(biāo)簽,用-a指定標(biāo)簽名,-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 <askxuefeng@gmail.com>
Date:   Mon Aug 26 07:28:11 2013 +0800

version 0.1 released

commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Tue Aug 20 15:11:49 2013 +0800

    append GPL

還可以通過-s用私鑰簽名一個標(biāo)簽:

$ git tag -s v0.2 -m "signed version 0.2 released" fec145a

簽名采用 PGP 簽名,因此,必須首先安裝 gpg(GnuPG),如果沒有找到 gpg,或者沒有 gpg 密鑰對,就會報錯:

gpg: signing failed: secret key not available
error: gpg failed to sign the data
error: unable to sign the tag

如果報錯,請參考 GnuPG 幫助文檔配置 Key。

用命令git show <tagname>可以看到 PGP 簽名信息:

$ git show v0.2
tag v0.2
Tagger: Michael Liao <askxuefeng@gmail.com>
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 <askxuefeng@gmail.com>
Date:   Thu Aug 22 10:37:30 2013 +0800

    branch test

用 PGP 簽名的標(biāo)簽是不可偽造的,因為可以驗證 PGP 簽名。驗證簽名的方法比較復(fù)雜,這里就不介紹了。

小結(jié)

  • 命令git tag <name>用于新建一個標(biāo)簽,默認(rèn)為 HEAD,也可以指定一個commit id;

  • git tag -a <tagname> -m "blablabla..."可以指定標(biāo)簽信息;

  • git tag -s <tagname> -m "blablabla..."可以用 PGP 簽名標(biāo)簽;

  • 命令git tag可以查看所有標(biāo)簽。
上一篇:添加遠(yuǎn)程庫下一篇:解決沖突