六 Git 標籤管理

2021-10-25 09:56:39 字數 3335 閱讀 5451

在發布版本時,我們通常先在版本庫打乙個標籤(tag),這樣,就唯一確定了打標籤時刻的版本.將來無論什麼時候,取某個標籤的版本,就是把那個打標籤的時刻的歷史版本取出來,所以標籤也是版本庫的乙個快照.

git的標籤雖然是版本庫的快照,但其實它就是指向某個commit的指標(跟分支很像對不對?但分支可以移動,標籤不能移動),所以,建立和刪除標籤都是瞬間完成的.

git有了commit,為什麼還要引入tag呢?

因為commit號是3b5819e...一串亂七八糟的數字不好找.而tag可以根據需要任意命名,讓人非常容易記住,它跟某個commit繫結在一起.

在git中打標籤,首先,需要切換到需要打標籤的分支上:

$ git branch

* dev

master

$ git checkout master

switched to branch 'master'

然後,敲命令git tag就可以打乙個標籤:

$ git tag v1.0

可以用命令git tag檢視所有標籤:

$ git tag

v1.0

預設標籤是打在最新提交的commit上的,有時候,如果忘了打標籤,需要給之前的提交打上標籤,怎麼辦呢?

方法是找到歷史提交的commit id,然後打上就可以了:

$ git log --pretty=oneline --abbrev-commit

b95bbf0 conflict fixed

c2e47c0 & ******

89cdc59 and ******

fae4e76 忽略不要的檔案

e151f7e add readme.md

3fafa4a remove test.txt

c291807 add test.txt

6d99443 boss

8b33073 git tracks changes

3557835 revert "add aaa"

9b4fd89 add aaa

8cf77e4 add code for theme

92b6075 add spring-boot sample

5ad5c1f add a readme file

比方說要對& ******這次提交打標籤,它對應的commit id是c2e47c0,敲入命令:

$git tag v0.8 c2e47c0

再用命令git tag檢視:

$ git tag

v0.8

v1.0

這裡需要注意,標籤不是按時間順序列出的,而是按字母排序的,可以用git show檢視標籤資訊:

$ git show v0.8

commit c2e47c06db550e03b2c19ee5247b03d949a10541

author: alan7c date: fri mar 17 17:42:44 2017 +0800

& ******

diff --git a/readme.md b/readme.md

index 342d90d..0a28620 100644

--- a/readme.md

+++ b/readme.md

@@ -1 +1,2 @@

# spring-boot-mongo

還可以建立帶有說明的標籤,用-a指定標籤名,-m指定說明的文字:

$ git tag -a v0.9 -m "version 0.9 master" b95bbf0

用命令git show可以看到說明文字:

$ git show v0.9

tag v0.9

tagger: alan7c date: mon mar 27 16:29:13 2017 +0800

version 0.9 master

commit b95bbf0ac897b2d88fa4bcf0308913f624d566c7

merge: c2e47c0 89cdc59

author: alan7c date: fri mar 17 17:48:28 2017 +0800

conflict fixed

小結

如果標籤打錯了,也可以刪除標籤:

$ git tag -d v0.8

deleted tag 'v0.8' (was c2e47c0)

因為建立的標籤都是只儲存在本地,不會自動推送到遠端,所以打錯的標籤也可以在本地安全刪除.

如果要推送某個標籤到遠端,使用命令git push origin:

$ git push origin v1.0

total 0 (delta 0), reused 0 (delta 0)

to [email protected]/spring-boot-test.git

* [new tag] v1.0 -> v1.0

或者一次性推送全部尚未推送到遠端的本地標籤:

$ git push origin --tags

counting objects: 1, done.

writing objects: 100% (1/1), 554 bytes, done.

total 1 (delta 0), reused 0 (delta 0)

to [email protected]:michaelliao/learngit.git

* [new tag] v0.2 -> v0.2

* [new tag] v0.9 -> v0.9

如果標籤已經推送到遠端,要刪除遠端標籤就麻煩一點,但是格式如下:

$ git push origin :refs/tags/v0.9

to [email protected]:alanluochong/spring-mongo-test.git

- [deleted] v0.9

小結

六 Git 標籤管理

在發布版本時,我們通常先在版本庫打乙個標籤 tag 這樣,就唯一確定了打標籤時刻的版本.將來無論什麼時候,取某個標籤的版本,就是把那個打標籤的時刻的歷史版本取出來,所以標籤也是版本庫的乙個快照.git的標籤雖然是版本庫的快照,但其實它就是指向某個commit的指標 跟分支很像對不對?但分支可以移動,...

git 標籤管理

1.建立標籤 切換到需要打標籤的分支上 git branch git checkout master switch to branch master 然後git tag 就可以打乙個新標籤 git tag v1.02.檢視標籤資訊 git show v0.93.刪除本地標籤 git tag d v0...

Git 標籤管理

發布乙個版本時,我們通常先在版本庫中打乙個標籤 tag 這樣,就唯一確定了打標籤時刻的版本。將來無論什麼時候,取某個標籤的版本,就是把那個打標籤的時刻的歷史版本取出來。所以,標籤也是版本庫的乙個快照。git的標籤雖然是版本庫的快照,但其實它就是指向某個commit的指標 跟分支很像,但是分支可以移動...