Git标签管理
我們可以針對某一次的提交打上一個標(biāo)簽,有點類似于給某次提交取個別名,比如1.0版本發(fā)布時打個標(biāo)簽叫v1.0,2.0版本發(fā)布時打個標(biāo)簽叫v2.0,因為每次版本提交的結(jié)果都是一連串的哈希碼,不容易記憶,打上v1.0,v2.0這些具有某種含義的標(biāo)簽后,可以方便我們進(jìn)行版本管理。
本文是Git系列的第七篇,了解前面的文章有助于更好的理解本文:
1.Git概述
2.Git基本操作
3.Git中的各種后悔藥
4.Git分支管理
5.Git關(guān)聯(lián)遠(yuǎn)程倉庫
6.Git工作區(qū)儲藏兼談分支管理中的一個小問題
輕量級標(biāo)簽
輕量級標(biāo)簽就像是個不會變化的分支,實際上它就是個指向特定提交對象的引用。
首先我們可以通過如下命令來查看當(dāng)前倉庫中的所有標(biāo)簽:
$ git tag打標(biāo)簽的方式很簡單,直接通過git tag <tagname>來完成即可,如下命令:
$ git tag v1表示創(chuàng)建了一個名為v1的tag,這個tag默認(rèn)是創(chuàng)建在最新一次的commit上的,如下:
我們可以利用git show <tagname>來查看標(biāo)簽對應(yīng)的版本信息,如下:
我們可以通過$ git tag -d <tagname>命令刪除一個標(biāo)簽:
$ git tag -d v1如下圖:
如果我想給歷史上的某次commit打一個標(biāo)簽?zāi)?我們可以通過如下命令git tag <tagname> <commitversion>,如下:
$ git tag v0.0 7d519表示給commit的哈希碼為7d519的那一次commit打上一個標(biāo)簽,如下圖:
含附注的標(biāo)簽
而含附注標(biāo)簽,實際上是存儲在倉庫中的一個獨立對象,它有自身的校驗和信息,包含著標(biāo)簽的名字,電子郵件地址和日期,以及標(biāo)簽說明,標(biāo)簽本身也允許使用 GNU Privacy Guard (GPG) 來簽署或驗證。
打一個含附注的標(biāo)簽很簡單,使用git tag -a <tagname> -m <msg>命令,如下:
$ git tag -a v0.0 -m "文件初次建立" 7d519如下:
如果不加最后的版本號參數(shù),表示給最新的一次commit打標(biāo)簽。
簽署標(biāo)簽
說到簽署標(biāo)簽我們得先介紹一下GPG:
GPG是加密軟件,可以使用GPG生成的公鑰在網(wǎng)上安全的傳播你的文件、代碼。為什么說安全的?以Google所開發(fā)的repo為例,repo即采用GPG驗證的方式,每個里程碑tag都帶有GPG加密驗證,假如在里程碑v1.12.3處你想要做修改,修改完后將這個tag刪除,然后又創(chuàng)建同名tag指向你的修改點,這必然是可以的。但是,在你再次clone你修改后的項目時,你會發(fā)現(xiàn),你對此里程碑tag的改變不被認(rèn)可,驗證失敗,導(dǎo)致你的修改在這里無法正常實現(xiàn)。這就是GPG驗證的作用,這樣就能夠保證項目作者(私鑰持有者)所制定的里程碑別人將無法修改。那么,就可以說,作者的代碼是安全傳播的。為什么會有這種需求?一個項目從開發(fā)到發(fā)布,再到后期的更新迭代,一定會存在若干的穩(wěn)定版本與開發(fā)版本(存在不穩(wěn)定因素)。作為項目發(fā)起者、持有者,有權(quán)定義他(們)所認(rèn)可的穩(wěn)定版本,這個穩(wěn)定版本,將不允許其他開發(fā)者進(jìn)行改動。還以Google的repo項目為例,項目所有者定義項目開發(fā)過程中的點A為穩(wěn)定版v1.12.3,那么用戶在下載v1.12.3版本后,使用的肯定是A點所生成的項目、產(chǎn)品,就算其他開發(fā)者能夠在本地對v1.12.3進(jìn)行重新指定,指定到他們修改后的B點,但是最終修改后的版本給用戶用的時候,會出現(xiàn)GPG簽名驗證不通過的問題,也就是說這樣的修改是不生效的。
----摘自<帶GPG簽名的Git tag>一文
使用簽署標(biāo)簽我們先要生成GPG Key,生成命令如下:
$ gpg --gen-key能默認(rèn)的就直接按回車默認(rèn),不能默認(rèn)的就根據(jù)提示輸入相應(yīng)的值,這里的都很簡單,不再贅述。完了之后,就可以通過如下命令來打標(biāo)簽了:
$ git tag -s v0.0 -u "laowang" -m "文件初次建立" 7d519就把上面的-a換成-s,然后添加-u參數(shù),-u參數(shù)的值是我們在生成GPG Key的時候配置的name屬性的值,注意-u參數(shù)不可以寫錯,否則標(biāo)簽會創(chuàng)建失敗,如下:
如上圖,-u參數(shù)寫錯時,標(biāo)簽創(chuàng)建失敗。
標(biāo)簽推送到遠(yuǎn)程倉庫
git push命令并不會把tag提交到遠(yuǎn)程倉庫中去,需要我們手動提交,如下:
$ git push origin v0.0表示將v0.0標(biāo)簽提交到遠(yuǎn)程倉庫,也可以通過$ git push origin --tags提交所有的tag到遠(yuǎn)程倉庫,如下:
此時別人調(diào)用git pull更新代碼之后,就能看到我們的tag。如下:
Ok,Git標(biāo)簽管理我們先說這么多。有問題歡迎留言討論。
參考資料:
1.《GitHub入門與實踐》
2.《Pro Git》
更多JavaEE和Git資料請關(guān)注公眾號:
總結(jié)
- 上一篇: Mysql入门的10条语句
- 下一篇: cisco 热备份路由器协议HSRP笔记