git中tag與release的創(chuàng)建以及兩者的區(qū)別

簡介

本文辨析在參與開源項目時會遇到的tag與release的概念區(qū)別與聯(lián)系,并比較兩者的創(chuàng)建方法。

定義

標簽(tag)是特定提交(commit)一個指針,也就是每個tag對應(yīng)一個特定的commit。

Release是具有changelogs和二進制文件的一級對象,它可以代表超出Git架構(gòu)本身的一個特定時間點之前的所有項目歷史。也就是通過release,不但能夠通過源碼體現(xiàn)出項目歷史,還能通過已經(jīng)編譯好的二進制文件來進一步描述此時的項目狀態(tài)?!俺鯣it架構(gòu)本身“的意思則在于,git本身只能記錄項目修改,本質(zhì)上不適合將編譯好的項目二進制文件記錄下來。而通過release則把項目二進制文件保存了下來,方便用戶下載,也方便查找特定版本的二進制文件。

以下是Github official announcement所定義原文:

Releases are first-class objects with changelogs and binary assets that present a full project history beyond Git artifacts.

創(chuàng)建方法

Release分為兩種:lightweight and annotated.

創(chuàng)建lightweight類型的tag:

$ git tag v1.4-lw

創(chuàng)建annotated類型的tag:

$ git tag -a v1.4 -m "my version 1.4"

通過tag可以返回到項目的特定狀態(tài)下,所以可以將tag看作是在大量commit中設(shè)定的書簽。

創(chuàng)建release,則需要通過源碼托管商的網(wǎng)頁操作界面來進行,一般會要求填寫tag名、分支以及相應(yīng)的發(fā)布說明,還可上傳編譯好的程序、打包好的文件等。

比較

標簽是git中的概念,而release則是Github、碼云等源碼托管商所提供的更高層的概念。也就是說git本身是沒有release這個概念的,只有tag。

兩者之間的關(guān)系則是,release基于tag,為tag添加更豐富的信息,一般是編譯好的文件。

總結(jié)

Release是源碼托管商對git的tag功能的增強。通過git提供的tag功能,我們可以給項目進行版本標識,以識別特定的版本,如v0.1.0、v1.0.0等。而通過源碼托管商提供的release功能,在tag的基礎(chǔ)上我們可以添加編譯好的二進制文件等,如.deb、.exe等給特定的版本提供更多的信息,方便用戶,也方便后期查找特定版本的程序。

參考內(nèi)容

  1. Git Tagging
  2. What's the difference between tag and release?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容