Git (10)-- 打標(biāo)簽(git tag)

@[TOC]

超詳細(xì) Git 圖文版小白教程(持續(xù)更新)

像其他版本控制系統(tǒng)(VCS)一樣,Git 可以給倉庫歷史中的某一個(gè)提交打上標(biāo)簽块攒,以示重要励稳。 比較有代表性的是人們會(huì)使用這個(gè)功能來標(biāo)記發(fā)布結(jié)點(diǎn)( v1.0v2.0 等等)囱井。 在本節(jié)中驹尼,你將會(huì)學(xué)習(xí)如何列出已有的標(biāo)簽、如何創(chuàng)建和刪除新的標(biāo)簽庞呕、以及不同類型的標(biāo)簽分別是什么新翎。

1、列出標(biāo)簽

Git 中列出已有的標(biāo)簽非常簡(jiǎn)單住练,只需要輸入 git tag (可帶上可選的 -l 選項(xiàng) --list):

在這里插入圖片描述

我這個(gè)倉庫還沒有推送過標(biāo)簽地啰,所以顯示為空。
這個(gè)命令以字母順序列出標(biāo)簽讲逛,但是它們顯示的順序并不重要亏吝。

看一下git源碼庫的標(biāo)簽:

在這里插入圖片描述

你也可以按照特定的模式查找標(biāo)簽。 例如盏混,Git 自身的源代碼倉庫包含標(biāo)簽的數(shù)量超過 500 個(gè)蔚鸥。 如果只對(duì) 1.8.5 系列感興趣,可以運(yùn)行:

在這里插入圖片描述

按照通配符列出標(biāo)簽需要 -l--list 選項(xiàng):

如果你只想要完整的標(biāo)簽列表括饶,那么運(yùn)行 git tag 就會(huì)默認(rèn)假定你想要一個(gè)列表株茶,它會(huì)直接給你列出來, 此時(shí)的 -l--list是可選的图焰。

然而启盛,如果你提供了一個(gè)匹配標(biāo)簽名的通配模式,那么 -l--list 就是強(qiáng)制使用的。

2僵闯、創(chuàng)建標(biāo)簽

Git 支持兩種標(biāo)簽:輕量標(biāo)簽(lightweight)與附注標(biāo)簽(annotated)卧抗。

輕量標(biāo)簽很像一個(gè)不會(huì)改變的分支——它只是某個(gè)特定提交的引用。

而附注標(biāo)簽是存儲(chǔ)在 Git 數(shù)據(jù)庫中的一個(gè)完整對(duì)象鳖粟, 它們是可以被校驗(yàn)的社裆,其中包含打標(biāo)簽者的名字、電子郵件地址向图、日期時(shí)間泳秀, 此外還有一個(gè)標(biāo)簽信息,并且可以使用 GNU Privacy Guard (GPG)簽名并驗(yàn)證榄攀。 通常會(huì)建議創(chuàng)建附注標(biāo)簽嗜傅,這樣你可以擁有以上所有信息。但是如果你只是想用一個(gè)臨時(shí)的標(biāo)簽檩赢, 或者因?yàn)槟承┰虿幌胍4孢@些信息吕嘀,那么也可以用輕量標(biāo)簽。

2.1贞瞒、附注標(biāo)簽

Git 中創(chuàng)建附注標(biāo)簽十分簡(jiǎn)單偶房。 最簡(jiǎn)單的方式是當(dāng)你在運(yùn)行 tag 命令時(shí)指定 -a 選項(xiàng):

在這里插入圖片描述

-m 選項(xiàng)指定了一條將會(huì)存儲(chǔ)在標(biāo)簽中的信息。 如果沒有為附注標(biāo)簽指定一條信息军浆,Git 會(huì)啟動(dòng)編輯器要求你輸入信息棕洋。

通過使用 git show 命令可以看到標(biāo)簽信息和與之對(duì)應(yīng)的提交信息:

在這里插入圖片描述

輸出顯示了打標(biāo)簽者的信息、打標(biāo)簽的日期時(shí)間瘾敢、附注信息拍冠,然后顯示具體的提交信息。

2.2簇抵、輕量標(biāo)簽

另一種給提交打標(biāo)簽的方式是使用輕量標(biāo)簽庆杜。 輕量標(biāo)簽本質(zhì)上是將提交校驗(yàn)和存儲(chǔ)到一個(gè)文件中——沒有保存任何其他信息。 創(chuàng)建輕量標(biāo)簽碟摆,不需要使用 -a晃财、-s-m 選項(xiàng),只需要提供標(biāo)簽名字:

在這里插入圖片描述

這時(shí)典蜕,如果在標(biāo)簽上運(yùn)行 git show断盛,你不會(huì)看到額外的標(biāo)簽信息。 命令只會(huì)顯示出提交信息:

在這里插入圖片描述

3愉舔、后期打標(biāo)簽

你也可以對(duì)過去的提交打標(biāo)簽钢猛。 假設(shè)提交歷史是這樣的:

在這里插入圖片描述

現(xiàn)在,假設(shè)在 v1.0 時(shí)你忘記給項(xiàng)目打標(biāo)簽轩缤,也就是在 “Initial commit” 提交命迈。 你可以在之后補(bǔ)上標(biāo)簽贩绕。 要在那個(gè)提交上打標(biāo)簽,你需要在命令的末尾指定提交的校驗(yàn)和(或部分校驗(yàn)和):
在這里插入圖片描述

可以看到你已經(jīng)在那次提交上打上標(biāo)簽了:
在這里插入圖片描述

4壶愤、共享標(biāo)簽

默認(rèn)情況下淑倾,git push 命令并不會(huì)傳送標(biāo)簽到遠(yuǎn)程倉庫服務(wù)器上。 在創(chuàng)建完標(biāo)簽后你必須顯式地推送標(biāo)簽到共享服務(wù)器上征椒。 這個(gè)過程就像共享遠(yuǎn)程分支一樣——你可以運(yùn)行 git push origin <tagname>娇哆。

在這里插入圖片描述

如果想要一次性推送很多標(biāo)簽,也可以使用帶有 --tags 選項(xiàng)的 git push 命令勃救。 這將會(huì)把所有不在遠(yuǎn)程倉庫服務(wù)器上的標(biāo)簽全部傳送到那里碍讨。
在這里插入圖片描述

現(xiàn)在,當(dāng)其他人從倉庫中克隆或拉取蒙秒,他們也能得到你的那些標(biāo)簽垄开。

git push 推送兩種標(biāo)簽:
使用 git push <remote> --tags 推送標(biāo)簽并不會(huì)區(qū)分輕量標(biāo)簽和附注標(biāo)簽,沒有簡(jiǎn)單的選項(xiàng)能夠讓你只選擇推送一種標(biāo)簽税肪。

5、刪除標(biāo)簽

要?jiǎng)h除掉你本地倉庫上的標(biāo)簽榜田,可以使用命令 git tag -d <tagname>益兄。 例如,可以使用以下命令刪除一個(gè)輕量標(biāo)簽:

在這里插入圖片描述

注意上述命令并不會(huì)從任何遠(yuǎn)程倉庫中移除這個(gè)標(biāo)簽箭券,你必須用 git push <remote> :refs/tags/<tagname> 來更新你的遠(yuǎn)程倉庫:

第一種變體是 git push <remote> :refs/tags/<tagname>

在這里插入圖片描述

上面這種操作的含義是净捅,將冒號(hào)前面的空值推送到遠(yuǎn)程標(biāo)簽名,從而高效地刪除它辩块。

第二種更直觀的刪除遠(yuǎn)程標(biāo)簽的方式是:

git push origin --delete <tagname>
在這里插入圖片描述

6蛔六、檢出標(biāo)簽

如果你想查看某個(gè)標(biāo)簽所指向的文件版本,可以使用 git checkout 命令废亭, 雖然這會(huì)使你的倉庫處于“分離頭指針(detached HEAD)”的狀態(tài)——這個(gè)狀態(tài)有些不好的副作用:

在這里插入圖片描述

在“分離頭指針”狀態(tài)下国章,如果你做了某些更改然后提交它們,標(biāo)簽不會(huì)發(fā)生變化豆村, 但你的新提交將不屬于任何分支液兽,并且將無法訪問,除非通過確切的提交哈希才能訪問掌动。 因此四啰,如果你需要進(jìn)行更改,比如你要修復(fù)舊版本中的錯(cuò)誤粗恢,那么通常需要?jiǎng)?chuàng)建一個(gè)新分支:


在這里插入圖片描述

如果在這之后又進(jìn)行了一次提交柑晒,v4.0.0 分支就會(huì)因?yàn)檫@個(gè)改動(dòng)向前移動(dòng), 此時(shí)它就會(huì)和 v1.4 標(biāo)簽稍微有些不同眷射,這時(shí)就要當(dāng)心了匙赞。

在這里插入圖片描述
zan.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末佛掖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子罚屋,更是在濱河造成了極大的恐慌苦囱,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脾猛,死亡現(xiàn)場(chǎng)離奇詭異撕彤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)猛拴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門羹铅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人愉昆,你說我怎么就攤上這事职员。” “怎么了跛溉?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵焊切,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我芳室,道長(zhǎng)专肪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任堪侯,我火速辦了婚禮嚎尤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伍宦。我一直安慰自己芽死,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布次洼。 她就那樣靜靜地躺著关贵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滓玖。 梳的紋絲不亂的頭發(fā)上坪哄,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音势篡,去河邊找鬼翩肌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛禁悠,可吹牛的內(nèi)容都是我干的念祭。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼碍侦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼粱坤!你這毒婦竟也來了隶糕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤站玄,失蹤者是張志新(化名)和其女友劉穎枚驻,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體株旷,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡再登,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晾剖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锉矢。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖齿尽,靈堂內(nèi)的尸體忽然破棺而出沽损,到底是詐尸還是另有隱情,我是刑警寧澤循头,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布绵估,位于F島的核電站,受9級(jí)特大地震影響卡骂,放射性物質(zhì)發(fā)生泄漏壹士。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一偿警、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唯笙,春花似錦螟蒸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苞慢,卻和暖如春诵原,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挽放。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工绍赛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辑畦。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓吗蚌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親纯出。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚯妇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容