1. 程式人生 > >git 使用詳解-- tag打標籤

git 使用詳解-- tag打標籤

Git 的標籤管理。跟大多數的 VCS 工具一樣,git 也有在歷史狀態的關鍵點“貼標籤”的功能,一般人們用這個功能來標記釋出點(例如’v1.0′)。

列出git中現有標籤
要想列出git中現有的所有標籤,輸入’git tag’命令執行即可:

$ git tag
v0.1
v1.3

這個列表是按照字母表順序給出的,其實排名先後跟重要程度沒有直接聯絡。
當然,你也可以按照特定表示式搜尋某些標籤。假如在一個 git 倉庫中有超過 240 個標籤,而你只想得到 1.4.2 序列的標籤,那麼你可以:

$ git tag -l v1.4.2.*
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4

建立標籤
在 git 中有兩種最主要的標籤–輕量級標籤(lightweight)和帶註釋的標籤(annotated)。輕量級標籤跟分枝一樣,不會改變。它就是針對某個特定提交的指標。然而,帶註釋的標籤是git倉庫中的物件。它是一組校驗和,包含標籤名、email、日期,標籤資訊,GPG簽名和驗證。一般情況下,建議建立帶註釋的標籤,這樣就會保留這些資訊,但是如果你只是需要臨時性標籤或者某些原因你不想在標籤中附帶上面說的這些資訊,lightweight標籤更合適些。
帶註釋的標籤

在git中建立帶註釋的標籤非常簡單,在執行’tag’命令時加上-a就可以了。

$ git tag -a v1.4 -m ‘version 1.4′
$ git tag
v0.1
v1.3
v1.4

‘-m’指明標籤資訊,跟標籤一起儲存。如果你不使用-m指明標籤資訊,git會自動啟動文字編輯器讓你輸入。
可以使用 git show 命令檢視相應標籤的版本資訊,並連同顯示打標籤時的提交物件。

$ git show v1.4
tag v1.4
Tagger: Scott Chacon 
Date: Mon Feb 9 14:45:11 2009 -0800
my version 1.4
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7… a6b4c97…
Author: Scott Chacon 
Date: Sun Feb 8 19:02:46 2009 -0800
Merge branch ‘experiment’

我們可以看到,在提交物件資訊上面,列出了此標籤的提交者和提交時間,以及相應的標籤資訊。
有簽名的標籤。

如果你有GPG私鑰的話,你也可以用GPG來給你的標籤簽名,把-a換成-s就可以了:

[master]$ git tag -s v1.5 -m ‘my signed 1.5 tag’
You need a passphrase to unlock the secret key for
user: “Scott Chacon ”
1024-bit DSA key, ID F721C45A, created 2009-02-09

然後,如果你對某個標籤執行’git show’的話,你就會看到你的GPG前面附加上去了。

[master]$ git show v1.5
tag v1.5
Tagger: Scott Chacon 
Date: Mon Feb 9 15:22:20 2009 -0800
my signed 1.5 tag
—–BEGIN PGP SIGNATURE—–
Version: GnuPG v1.4.8 (Darwin)
iEYEABECAAYFAkmQurIACgkQON3DxfchxFr5cACeIMN+ZxLKggJQf0QYiQBwgySN
Ki0An2JeAVUCAiJ7Ox6ZEtK+NvZAj82/
=WryJ
—–END PGP SIGNATURE—–
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7… a6b4c97…
Author: Scott Chacon 
Date: Sun Feb 8 19:02:46 2009 -0800
Merge branch ‘experiment’

稍後,我們會介紹如何驗證簽名標籤。

輕量級標籤
輕量級標籤實際上就是存在一個檔案中的提交校驗和–沒有附加任何其他資訊。建立輕量級標籤的方法就是把上面’-a’,'-s’,'-m’這些選項都去掉。

$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5

如果現在對這個標籤使用’git show’命令,不會看到像上面那種標籤顯示的那麼多內容,僅僅顯示這次提交的有關資訊。

$ git show v1.4-lw
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7… a6b4c97…
Author: Scott Chacon 
Date: Sun Feb 8 19:02:46 2009 -0800
Merge branch ‘experiment’

驗證標籤
使用’git tag -v (tag)’就可以驗證一個簽名標籤了。這個命令會用到GPG來驗證簽名。前提是:你必須在金鑰環中存放著簽名者的公鑰。

$ git tag -v v1.4.2.1
object 883653babd8ee7ea23e6a5c392bb739348b1eb61
type commit
tag v1.4.2.1
tagger Junio C Hamano 1158138501 -0700
GIT 1.4.2.1
Minor fixes since 1.4.2, including git-mv and git-http with alternates.
gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
gpg: Good signature from “Junio C Hamano ”
gpg: aka “[jpeg image of size 1513]”
Primary key fingerprint: 3565 2A26 2040 E066 C9A7 4A7D C0C6 D9A4 F311 9B9A

如果你沒有這個公鑰的話,你會看到這樣的資訊:

gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
gpg: Can’t check signature: public key not found
error: could not verify the tag ‘v1.4.2.1′

後期貼標籤
這種情況是說你想對以前的某次提交貼個標籤,如果整個提交歷史是這樣的:

$ git log –pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch ‘experiment’
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch ‘experiment’
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme

忘記在那個提交資訊為’updated rakefile’的點上貼一個’v1.2′的標籤了,我可以現在貼一個上去。你可以在執行建立標籤的語句後面跟上那次提交的校驗和(或者部分校驗和)。

$ git tag -a v1.2 9fceb02

現在我們可以列出所有的標籤:

$ git tag
v0.1
v1.2
v1.3
v1.4
v1.4-lw
v1.5
$ git show v1.2
tag v1.2
Tagger: Scott Chacon 
Date: Mon Feb 9 15:32:16 2009 -0800
version 1.2
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: Magnus Chacon 
Date: Sun Apr 27 20:43:35 2008 -0700
updated rakefile

共享標籤

預設情況下,git push 並不會把標籤傳送到遠端伺服器上,只有通過顯式命令才能分享標籤到遠端倉庫。其命令格式如同推送分支,執行git push origin [tagname] 即可:

$ git push origin v1.5

預設情況下,’git push’命令不會將標籤上傳到遠端伺服器上。為了共享這些標籤,你必須在’git push’命令後明確新增-tags選項

[master]$ git push –tags
Counting objects: 50, done.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (44/44), 4.56 KiB, done.
Total 44 (delta 18), reused 8 (delta 1)
To [email protected]:schacon/simplegit.git
* [new tag] v0.1 -> v0.1
* [new tag] v1.2 -> v1.2
* [new tag] v1.4 -> v1.4
* [new tag] v1.4-lw -> v1.4-lw
* [new tag] v1.5 -> v1.5

現在,如果有人克隆或者線上同步你的git倉庫的話,標籤也會一併同步了。

刪除tag這麼用:

git push origin --delete tag 
直接使用git checkout tag名稱 就可以了

將程式碼切換到某個tag指向的程式碼時期:

tag是對歷史一個提交id的引用,如果理解這句話就明白了
使用git checkout tag即可切換到指定tag,例如:git checkout v0.1.0

切換到tag歷史記錄會處在分離頭指標狀態,這個是的修改是很危險的,在切換回主線時如果沒有合併,之前的修改提交基本都會丟失,如果需要修改可以嘗試git checkout -b branch tag建立一個基於指定tag的分支,例如:git checkout -b tset v0.1.0  這個時候就會在分支上進行開發,之後可以切換到主線合併

相關推薦

git 使用-- tag標籤

Git 的標籤管理。跟大多數的 VCS 工具一樣,git 也有在歷史狀態的關鍵點“貼標籤”的功能,一般人們用這個功能來標記釋出點(例如’v1.0′)。列出git中現有標籤 要想列出git中現有的所有標籤,輸入’git tag’命令執行即可: $ git tag v0.

Git 四 (標籤,分支)

標籤 當某一個大版本完成之後,需要打一個標籤 作用: 記錄大版本 備份大版本程式碼 模擬經理打標籤 1.進入到經理的本地倉庫test007 cd Desktop/manager/test007/ 2.經理在本地打標籤 git tag -

圖文AO印(端橋模式)

鏈接 javascrip 普通 pri 網上 設備 宋體 網絡 執行 一、概述 AO打印是英文Active-Online Print的簡稱,也稱主動在線打印。打印前支持AO通訊協議的AO打印機首先通過普通網絡與C-Lodop服務保持在線鏈接,網頁程序利用JavaS

圖文AO印(標準模式)

vpp end 協議 ive uip 技術 鼠標 win 比較 一、概述 AO打印是英文Active-Online Print的簡稱,也稱主動在線打印。打印前支持AO通訊協議的AO打印機(購買地址>>)首先通過普通網絡與C-Lodop服務保持在線鏈接,網頁程

Git與gitlab使用

git 系統版本控制 gitlab第1章 版本控制系統都能幹什麽?自動生成備份知道改動的地方隨時回滾第2章 常見的版本控制系統2.1 git是一個分布式版本控制系統,在每個使用者的電腦上有一個完整的數據倉庫,沒有網絡依然可以使用git,當然為了習慣及團隊協作,會將本地數據同步到git服務器或者gith

Git及github與gitlab使用

down 使用 第五章 AR IT 初始 配置 ref hub 第一章 關於版本控制 第二章 GIT簡介 第三章 GIT安裝 第四章 初次運行GIT前配置 第五章 初始化倉庫 Git詳解及github與gitlab使用

圖文AO印(端橋模式)(轉)

_for int 支持 復雜 9.png 正常 完成 AR 廣域網 一、概述 AO打印是英文Active-Online Print的簡稱,也稱主動在線打印。打印前支持AO通訊協議的AO打印機首先通過普通網絡與C-Lodop服務保持在線鏈接,網頁程序利用JavaScri

Django中static(靜態)檔案以及{% static %}標籤的使用

想要深入學習Django的可以看一些這個視訊:超細講解Django打造大型企業官網 在一個網頁中,不僅僅只有一個html骨架,還需要css樣式檔案,js執行檔案以及一些圖片等。因此在DTL中載入靜態檔案是一個必須要解決的問題。在DTL中,使用static標籤來載入靜態檔案。要使用stat

Win10安裝Git

Git是一個開源的分散式版本控制系統,可以有效、高速的處理從很小到非常大的專案版本管理。具體安裝步驟如下: 第一步:先從官網下載最新版本的Git 官網地址:https://git-scm.com/downloads     點選上圖中表示的地方進行下載,得到Git-2.17.1.

本地專案上傳(更新)git

一、安裝配置git 1.下載安裝不提 2.配置git 配置你的名字和郵箱 $ git config --global user.name “John Doe” $ git config --global user.email "[email protected]" 二、上傳

Git

add 分支管理 需要 新的 ren upstream 管理方式 圖片 src 一.Git整體理解   Git代碼管理是分布式管理方式系統.優點在於其極高的安全性和非常強大的分支管理

jstl標籤:core標籤/function/fmt等等

標準標籤庫JSTL的全名為:Java Server Pages Standard Tag Library. JSTL主要提供了5大類標籤庫: 1.核心標籤庫: 為日常任務提供通用支援,如顯示和設定變數,重複使用一組專案,測試條件以及其他操作(如匯入和重定向web頁面等). 2.國際化(I18N)標籤庫:

git三——共享分支

轉載自:http://blog.jobbole.com/25877/ Git 分支 幾乎每一種版本控制系統都以某種形式支援分支。使用分支意味著你可以從開發主線上分離開來,然後在不影響主線的同時繼續工作。在很多版本控制系統中,這是個昂貴的過程,常常需要建立一個原始碼目錄的完整副本,對大型專案來

git二——git基礎

轉載自:http://blog.jobbole.com/25808/ Git 基礎 讀完本章你就能上手使用 Git 了(伯樂線上注:如果你對Git還不瞭解,建議從本Git系列第一篇文章開始閱讀)。本章將介紹幾個最基本的,也是最常用的 Git 命令,以後絕大多數時間裡用到的也就是這幾個命令。讀

git

裝載自:http://blog.jobbole.com/25775/ 起步 本章介紹開始使用 Git 前的相關知識。我們會先了解一些版本控制工具的歷史背景,然後試著讓 Git 在你的系統上跑起來,直到最後配置好,可以正常開始開發工作。讀完本章,你就會明白為什麼 Git 會如此流行,為什麼你應

Struts2中的OGNL(和標籤庫一起使用)

#符號的用途一般有三種。 —    訪問非根物件屬性,例如#session.msg表示式,由於Struts 2中值棧被視為根物件,所以訪問其他非根物件時,需要加#字首。實際上,#相當於ActionContext. getContext();#session.msg表示式相當於ActionContex

Git——push

push 的本質 在之前的內容里,我粗略地說過, push 指令做的事是把你的本地提交上傳到中央倉庫去,用本地的內容來覆蓋掉遠端的內容。這個說法其實是不夠準確的,但 Git 的知識系統比較龐大,在你對 Git 了 解比較少的時候,用「上傳本地提交」來解釋會比較好理解;而在你知道了 branch ,並且明白了

Git——merge

merge:合併 commits 前面說到, pull 的內部操作其實是把遠端倉庫取到本地後(使用的是 fetch ),再用一次 merge 來把遠端倉庫的新 commits 合併到本地。這一節就說一下, merge 到底是什麼。   含義和用法 merge 的意思是「合併」,它做的事也是合

Git——Feature Branching:最流行的工作流

在前面的 Git入門——團隊工作的基本工作模型 中 ,介紹了一種最基本的團隊工作模型。在這種模型里,所有人都工作在 master 上,寫完了的 commit 可以通過 push 來發送到中央倉庫,並且可以使用 pull 來獲取到 別人的最新 commit s。   這種工作模

Git——add

前面說過了可以通過 add 來把改動的內容放進暫存區。這一節關於 add 再多說兩點。都是基礎的東西,但對新學 Git 的人可能有些用處。   1、add 後面加個點 ".":全部暫存 add 指令除了 git add 檔名 這種用法外,還可以使用 add . 來直接把工作目錄下的所有改動全部