天天看點

Git--tag 标簽

1. 什麼是标簽?

标簽就是一個标記。

通常我們會在釋出版本的時候,對最後一次的commit 送出打上一個标簽,用來區分不同的app版本。(當然,标簽也有其他用途)

2. 為什麼需要标簽?

你可能會想,既然标簽隻是一個标記,那麼我們在commit的時候會有一個‘ -m ’的送出說明,在釋出app版本的時候為了區分不同的版本的我們也可以建立不同的branch分支,它們都能起到标記的作用,我們為什麼還需要标簽呢??

打個比方,你有一本很厚的書,書會有頁碼(相當于我們commit時的說明),也會有目錄(相當于我們的branch分支),但是我覺的你最好有一些書簽(相當于我們這裡要說的tag标簽),有了這書簽之後,你就能更快速的找到你之前的閱讀位置。也就是說,有了tag之後,你不用checkout分支,也不用逐條的翻閱commit送出記錄,你隻需要‘ git checkout 标簽名’ 就能快速的切換到你需要的版本位置。

3. 标簽的基本使用

(1). 檢視标簽

  • git tag
    該指令的作用是,列出目前已有的全部标簽名,也可以使用‘ git tag -l ’。如下圖:
    Git--tag 标簽
    檢視标簽時也可以使用通配符 * , 具體如下:
    • git tag -l ‘2*’
      列出以 2 開頭的所有标簽名,如下圖:
      Git--tag 标簽
    • git tag -l ‘*2’
      列出以 2 結尾的所有标簽名,如下圖:
      Git--tag 标簽
    • git tag -l ‘* 版本*’
      列出包含 版本 字樣的所有标簽名,如下圖:
      Git--tag 标簽

(2). 建立标簽

Git 标簽有兩種類型: Annotated (有附注的标簽),LightWeight(輕量級沒有附注的标簽)。

LightWeight 隻是一個指向了特定commit 送出記錄的引用。

Annotated 則是存儲在倉庫中的一個獨立對象,它有自身的校驗和資訊,包含打标簽者的名字,電子郵件位址和日期,以及标簽說明等資訊。

标簽本身也允許使用 GNU Privacy Guard (GPG) 來簽署或驗證。

通常我們使用含附注型的标簽,以便保留相關資訊;但如果隻是臨時性加注标簽,或不需要描述資訊,就用輕量級标簽。

1). 建立含附注的标簽

git tag -a 标簽名稱 -m ‘标簽描述’

如:git tag -a v1.1 -m ‘建立含附注的v1.1标簽’

如下圖:

Git--tag 标簽
  • 如果在建立含有附注的标簽時,并沒有寫 -m 及其後面的描述内容,就會跳轉到 vi/vim 編輯器中。這樣就需要在vi/vim編輯器中完成 描述内容的編輯。進入編輯器中的效果如下:
    Git--tag 标簽
    點選跳轉到:Vi/Vim編輯器的基本使用介紹

2). 建立輕量級标簽

git tag 标簽名

如:git tag v2.1.9,執行該指令後,會建立一個沒有描述資訊的标簽 ; 與建立含附注的标簽相比,不需要 -a , 也不需要 -m

(3). 檢視标簽資訊

git show 标簽名

如:git show v2.1.8,檢視v2.1.8 這個标簽的相應内容,如下圖:
Git--tag 标簽

(4). 後期加注标簽

git tag -a 标簽名 送出對象的校驗和 -m ‘标簽描述’

預設情況下,标簽是打在最新送出的commit上,如果忘記了打标簽,也可以在後期加注标簽,隻需要在加注标簽的時候指定 送出對象的校驗和(這個校驗和就是用 git log 指令檢視送出曆史時展示的 commit 後面的那一串字元串),實際使用的時候,校驗和不需要使用完整的,隻需要使用前幾位即可。
Git--tag 标簽
補注标簽的代碼圖示:
Git--tag 标簽

(5). 推送标簽到遠端倉庫

git push 遠端倉庫名稱 标簽名

預設情況下,直接使用 git push 并不會把标簽傳送到遠端伺服器上,還必須指定需要推送到的遠端倉庫

如:git push origin v1.5 通過這個指令,就可以名稱為 v1.5 的這個标簽推送到名稱為 origin 的這個倉庫。

如果想推送全部标簽到遠端倉庫,隻需要執行下列指令:

git push origin - -tags

(6). 檢視推送到遠端伺服器的标簽

将标簽推送到遠端伺服器之後,可以打開項目進行檢視,如下圖:releases 就表示被推送的标簽
Git--tag 标簽

(7). 删除标簽

git tag -d 标簽名

如:git tag -d v1.4補注标簽 執行該指令後,就會将名稱為 v1.4補注标簽 的标簽删除,如下圖:
Git--tag 标簽
預設情況下,标簽會存放在本地,不會主動推送到遠端伺服器。上面的 -d 指令也就是删除本地的标簽

如果标簽已經推送到遠端服務端,要删除的話,需要先從本地删除,然後再通過 push 删除服務端的标簽 ,

git tag -d v1.5

git push origin :refs/tags/v1.5

執行完上面兩個指令之後,就會将本地和遠端的名稱為 v1.5 的标簽删除。

(8). 擷取遠端伺服器上的标簽

  • git pull origin
    執行該指令後,可以從伺服器将本地不存在标簽拉取到本地,如下圖:
    Git--tag 标簽
  • git pull origin tag 标簽名
    該指令的作用是從遠端伺服器拉取指定标簽名的标簽到本地

(9). 切換标簽

git checkout 标簽名

如同切換分支,執行該指令後,就會切換到指定名稱的标簽。

如:git checkout v1.5 執行完該指令後,會切換到 名稱為 v1.5 的标簽上,同 branch 類似,你目前操作的代碼也會回退到 v1.5 标簽對應的最後一次commit時的狀态

git checkout -b 分支名

作用:基于被切換到的标簽建立一個新的分支

使用 git checkout 标簽名 切換了标簽之後,代碼會處于一個臨時分支中,當你切換到其他分支後,臨時分支會消失。如果我們希望能夠基于被切換到的标簽建立一個新的分支就可以使用該指令。

Git--tag 标簽

寫在結尾:

到了今天,除了GPG 簽名标簽 ,Git 中标簽的基本用法總結完畢,關于GPG簽名标簽我沒具體用過,隻是大緻了解,是以暫時不做總結了。