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> //推送到遠程倉庫
  • 1
  • 2

若存在很多未推送的本地標簽,你想一次全部推送的話,可以使用一下的命令:

git push origin --tags 
  • 1
  • 2

以上是基於本地當前分支的最后的一個 commit 創建的 tag ,但是如果不想以最后一個,只想以某一個特定的提交為 tag ,也是可以的,只要你知道 commit 的 id。

git log --pretty=oneline //查看當前分支的提交歷史,里面包含 commit id git tag -a <tagName> <commitId>
  • 1
  • 2

2.查看標簽

查看本地某個 tag 的詳細信息:

git show <tagName>
  • 1

查看本地所有 tag :

//下面兩個命令都可以 git tag git tag -l
  • 1
  • 2
  • 3

查看遠程所有 tag:

git ls-remote --tags origin 
  • 1
  • 2

3.刪除標簽

本地 tag 的刪除:

git tag -d <tagName>
  • 1

遠程 tag 的刪除:

git push origin :<tagName>
  • 1

4.重命名標簽

這個本質上是刪除掉舊名字 tag ,然后再新建新名字 tag ,然后實現重命名的作用。

如果 tag 只存在本地,那么只需要刪除本地的舊名字 tag ,然后新建新名字 tag:

git tag -d <oldTagName> git tag <newTagName> git push origin <newTagName> //推送到遠程倉庫
  • 1
  • 2
  • 3

若已經推送到遠程了,那么不僅要刪除本地的,還要刪除遠程的,再重新創建和推送:

git tag -d <oldTagName>
git push origin :<oldTagName> git tag <newTagName> git push origin <newTagName> //推送到遠程倉庫 
  • 1
  • 2
  • 3
  • 4
  • 5

5.檢出標簽

命令如下:

git checkout -b <branchName> <tagName>
  • 1

因為 tag 本身指向的就是一個 commit,所以和根據 commit id 檢出分支是一個道理。
但是需要特別說明的是,如果我們想要修改 tag 檢出代碼分支,那么雖然分支中的代碼改變了,但是 tag 標記的 commit 還是同一個,標記的代碼是不會變的,這個要格外的注意。

--------------------- 作者:DRPrincess 來源:CSDN 原文:https://blog.csdn.net/qq_32452623/article/details/73949509?utm_source=copy 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM