Git-命令列-使用 Tag 標記你的程式碼
前言
正文開始之前,我想我們需要弄明白幾個問題:
1.tag 是什麼?
2.使用tag 的好處?
3.tag 和 branch 的區別以及使用場景?
tag 是什麼?
tag , 翻譯過來是標籤的意思,顧名思義,標籤是為了標記某種事物。
tag 是 Git 版本庫的一個快照,指向某個 commit 的指標。使用tag 的好處?
tag 的存在,是因為我們需要這種標記的功能。目前的專案開發中,當釋出版本時 tag 就派上用場了。例如 v1.0.1,v1.0.2…
另外,git 提供了 tag 的增刪改查一系列操作,在 tag 的使用上,可謂非常之方便。tag 和 branch 的區別以及使用場景?
想到這裡,你可能覺得 tag 和 branch 有點相似。沒錯,的確是有點像,但是它們的職責分工和本質都是不同的。
tag 對應某次 commit, 是一個點,是不可移動的。
branch 對應一系列 commit,是很多點連成的一根線,有一個HEAD 指標,是可以依靠 HEAD 指標移動的。所以,兩者的區別決定了使用方式,改動程式碼用 branch ,不改動只檢視用 tag。
tag 和 branch 的相互配合使用,有時候起到非常方便的效果,例如 已經發布了 v1.0 v2.0 v3.0 三個版本,這個時候,我突然想不改現有程式碼的前提下,在 v2.0 的基礎上加個新功能,作為 v4.0 釋出。就可以 檢出 v2.0 的程式碼作為一個 branch ,然後作為開發分支。
tag 的簡單使用
以下命令都是我使用 tag 過程中一般會使用到的,可以說都是常用命令。
1.建立標籤
需要說明的是,建立 tag 是基於本地分支的 commit,而且與分支的推送是兩回事,就是說分支已經推送到遠端了,但是你的 tag 並沒有,如果把 tag 推送到遠端分支上,需要另外執行 tag 的推送命令。
git tag <tagName> //建立本地tag
git push origin <tagName> //推送到遠端倉庫
若存在很多未推送的本地標籤,你想一次全部推送的話,可以使用一下的命令:
git push origin - -tags
以上是基於本地當前分支的最後的一個 commit 建立的 tag ,但是如果不想以最後一個,只想以某一個特定的提交為 tag ,也是可以的,只要你知道 commit 的 id。
git log --pretty=oneline //檢視當前分支的提交歷史,裡面包含 commit id
git tag -a <tagName> <commitId>
2.檢視標籤
檢視本地某個 tag 的詳細資訊:
git show <tagName>
檢視本地所有 tag :
//下面兩個命令都可以
git tag
git tag -l
檢視遠端所有 tag:
git ls-remote --tags origin
3.刪除標籤
本地 tag 的刪除:
git tag -d <tagName>
遠端 tag 的刪除:
git push origin :<tagName>
4.重新命名標籤
這個本質上是刪除掉舊名字 tag ,然後再新建新名字 tag ,然後實現重新命名的作用。
如果 tag 只存在本地,那麼只需要刪除本地的舊名字 tag ,然後新建新名字 tag:
git tag -d <oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到遠端倉庫
若已經推送到遠端了,那麼不僅要刪除本地的,還要刪除遠端的,再重新建立和推送:
git tag -d <oldTagName>
git push origin :<oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到遠端倉庫
5.檢出標籤
命令如下:
git checkout -b <branchName> <tagName>
因為 tag 本身指向的就是一個 commit,所以和根據 commit id 檢出分支是一個道理。
但是需要特別說明的是,如果我們想要修改 tag 檢出程式碼分支,那麼雖然分支中的程式碼改變了,但是 tag 標記的 commit 還是同一個,標記的程式碼是不會變的,這個要格外的注意。
歡迎關注博主的微信公眾號,快快加入哦,期待與你一起成長!