八、Git標(biāo)簽與別名

標(biāo)簽肚逸,顧名思義就是做標(biāo)記爷辙,在git中彬坏,一般用與標(biāo)記某個(gè)發(fā)布節(jié)點(diǎn)。

git 支持兩種標(biāo)簽:輕量標(biāo)簽(lightweight)與附注標(biāo)簽(annotated)膝晾。

輕量標(biāo)簽:很像一個(gè)不會(huì)改變的分支——它只是某個(gè)特定提交的引用苍鲜,不會(huì)存儲(chǔ)任何信息。

附注標(biāo)簽:是存儲(chǔ)在 Git 數(shù)據(jù)庫(kù)中的一個(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)簽喊括。

列出標(biāo)簽

使用git tag命令(可帶上可選的參數(shù)-l或者-list

$ git tag

這個(gè)命令會(huì)以字母順序列出標(biāo)簽胧瓜,但不是很重要

如果對(duì)某個(gè)特定的版本號(hào)感興趣,可以使用下面的方式:

$ git tag -l "v1.8.5*" # 查看v1.8.5系列

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

附注標(biāo)簽:

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

$ git tag -a v1.0 -m 'test version 1.0'

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

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

$ git show -q v1.0 # -q表示不顯示差異輸出
tag v1.0
Tagger: hahaha <orcale.io@gmail.com>
Date:   Sun Sep 27 14:21:53 2020 +0800

test version 1.0

commit 6680bd40434821abf3e29045593629d4c9fddb15 (HEAD -> master, tag: v1.0)
Author: hahaha <orcale.io@gmail.com>
Date:   Sun Sep 27 12:58:55 2020 +0800

    modify google.txt add google play

輸出顯示了打標(biāo)簽者的信息钝满、打標(biāo)簽的日期時(shí)間、附注信息申窘,然后顯示具體的提交信息弯蚜。

輕量標(biāo)簽:

輕量標(biāo)簽本質(zhì)上是將提交校驗(yàn)和 存儲(chǔ)到一個(gè)文件中——沒(méi)有保存任何其他信息。 創(chuàng)建輕量標(biāo)簽剃法,不需要使用 -a碎捺、-s-m 選項(xiàng),只需要提供標(biāo)簽名字:

$ git tag v1.0.1

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

$ git show -q v1.0.1
commit 6680bd40434821abf3e29045593629d4c9fddb15 (HEAD -> master, tag: v1.0.1, tag: v1.0)
Author: hahaha <orcale.io@gmail.com>
Date:   Sun Sep 27 12:58:55 2020 +0800

    modify google.txt add google play

后期打標(biāo)簽

git也可以對(duì)過(guò)去的提交打標(biāo)簽恩脂。假如提交歷史是這樣的:

$ git log --oneline
6680bd4 (HEAD -> master, tag: v1.0.1, tag: v1.0) modify google.txt add google play
0b1cde0 readme.txt version 3.0
4b45669 readme.txt version 2.0
d3c72dd readme.txt version 1.0
73d5592 modify google.txt and add file readme.txt
6a1006a rename app.txt -> application.txt
......

假設(shè)現(xiàn)在想在readme.txt version 1.0這次提交上打個(gè)標(biāo)簽帽氓,那么就需要在命令的末尾指定提交的校驗(yàn)和(或部分校驗(yàn)和):

$ git tag -a v1.0-release d3c72dd -m '后期打標(biāo)簽,釋放1.0版本'
$ git tag
v1.0
v1.0-release
v1.0.1

$ git show -q v1.0-release
tag v1.0-release
Tagger: hahaha <orcale.io@gmail.com>
Date:   Sun Sep 27 14:31:55 2020 +0800

后期打標(biāo)簽俩块,釋放1.0版本

commit d3c72dd5ba02000c359d3b7b524250f42d3fade5 (tag: v1.0-release)
Author: hahaha <orcale.io@gmail.com>
Date:   Sat Sep 26 16:56:55 2020 +0800

    readme.txt version 1.0

可以看到你已經(jīng)在那次提交上打上標(biāo)簽了黎休。

共享(推送)標(biāo)簽

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

# 在之前講遠(yuǎn)程倉(cāng)庫(kù)時(shí),我們?cè)谧詈蟀堰h(yuǎn)程倉(cāng)庫(kù)移除了捎拯,現(xiàn)在我們先添加上
$ git remote add origin https://github.com/tiangoubot/learngit.git
# 共享(推送)標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù)
$ git push origin v1.0-release
Enumerating objects: 1, done.
Counting objects: 100% (1/1), done.
Writing objects: 100% (1/1), 201 bytes | 50.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/tiangoubot/learngit.git
 * [new tag]         v1.0-release -> v1.0-release
image-20200927143930833.png

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

$ git push origin --tags
Enumerating objects: 1, done.
Counting objects: 100% (1/1), done.
Writing objects: 100% (1/1), 160 bytes | 160.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/tiangoubot/learngit.git
 * [new tag]         v1.0 -> v1.0
 * [new tag]         v1.0.1 -> v1.0.1

現(xiàn)在祸泪,當(dāng)其他人從倉(cāng)庫(kù)中克隆或拉取,他們也能得到你的那些標(biāo)簽建芙。

刪除標(biāo)簽

刪除掉你本地倉(cāng)庫(kù)上的標(biāo)簽没隘,可以使用命令 git tag -d <tagname>。 例如禁荸,可以使用以下命令刪除一個(gè)輕量標(biāo)簽:

$ git tag -d v1.0.1
Deleted tag 'v1.0.1' (was 6680bd4)

注意:上述命令并不會(huì)從任何遠(yuǎn)程倉(cāng)庫(kù)中移除這個(gè)標(biāo)簽右蒲,你必須使用下面的方式來(lái)更新你的遠(yuǎn)程倉(cāng)庫(kù)。

  • 方式一:

    $ git push origin :refs/tags/v1.0.1
    To https://github.com/tiangoubot/learngit.git
     - [deleted]         v1.0.1
    

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

  • 方式二(更直觀一點(diǎn)):

    $ git push origin --delete v1.0
    To https://github.com/tiangoubot/learngit.git
     - [deleted]         v1.0
    

檢出標(biāo)簽

我還沒(méi)弄明白映砖,先空著翰撑,以后搞清楚了再來(lái)更新!

別名(了解)

git 舊版本并不會(huì)在你輸入部分命令時(shí)自動(dòng)補(bǔ)全你想要的命令啊央,如果不想每次都輸入完整的git命令眶诈,可以通過(guò) git config 文件來(lái)輕松地為每一個(gè)命令設(shè)置一個(gè)別名。 這里有一些例子你可以試試:

$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status

新版本的git有自動(dòng)補(bǔ)全命令的功能瓜饥,建議比較長(zhǎng)的命令可以使用別名逝撬,比如查看提交歷史的。

更多的信息乓土,請(qǐng)查看git官網(wǎng)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宪潮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子趣苏,更是在濱河造成了極大的恐慌狡相,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件食磕,死亡現(xiàn)場(chǎng)離奇詭異尽棕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)彬伦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)滔悉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)伊诵,“玉大人,你說(shuō)我怎么就攤上這事回官〔苎纾” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵歉提,是天一觀的道長(zhǎng)笛坦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)苔巨,這世上最難降的妖魔是什么版扩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮恋拷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘厅缺。我一直安慰自己蔬顾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布湘捎。 她就那樣靜靜地躺著诀豁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窥妇。 梳的紋絲不亂的頭發(fā)上舷胜,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音活翩,去河邊找鬼烹骨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛材泄,可吹牛的內(nèi)容都是我干的沮焕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拉宗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼峦树!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起旦事,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤魁巩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后姐浮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谷遂,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年卖鲤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了埋凯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片点楼。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖白对,靈堂內(nèi)的尸體忽然破棺而出掠廓,到底是詐尸還是另有隱情,我是刑警寧澤甩恼,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布蟀瞧,位于F島的核電站,受9級(jí)特大地震影響条摸,放射性物質(zhì)發(fā)生泄漏悦污。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一钉蒲、第九天 我趴在偏房一處隱蔽的房頂上張望切端。 院中可真熱鬧,春花似錦顷啼、人聲如沸踏枣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)茵瀑。三九已至,卻和暖如春躬厌,著一層夾襖步出監(jiān)牢的瞬間马昨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工扛施, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸿捧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓疙渣,卻偏偏與公主長(zhǎng)得像笛谦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昌阿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344