网站建站网站网站维护,互联网+可以做什么项目,网站开发工程师的证件,邮箱域名指的是什么文章目录 Ⅰ. 理解标签Ⅱ. 创建标签① 轻量级标签② 含附注类标签 Ⅲ. 操作标签 Ⅰ. 理解标签
标签 tag #xff0c;可以简单的理解为是 对某次 commit 的一个标识#xff0c;相当于起了一个别名。例如#xff0c;在项目发布某个版本的时候#xff0c;针对最后一次 com… 文章目录 Ⅰ. 理解标签Ⅱ. 创建标签① 轻量级标签② 含附注类标签 Ⅲ. 操作标签 Ⅰ. 理解标签
标签 tag 可以简单的理解为是 对某次 commit 的一个标识相当于起了一个别名。例如在项目发布某个版本的时候针对最后一次 commit 起一个 v1.0 这样的标签来标识里程碑的意义。
发布一个版本时我们通常先在版本库中打一个标签tag这样就唯一确定了打标签时刻的版本。将来无论什么时候取某个标签的版本就是把那个打标签的时刻的历史版本取出来。
所以标签是版本库的一个快照。
Git 的标签虽然是版本库的快照但它 其实就是指向某个 commit 的指针跟分支很像对不对但是分支可以移动标签不能移动所以创建和删除标签都是瞬间完成的速度非常快 Git 有 commit为什么还要引入 tag “请把上周一的那个版本打包发布commit 号是 6a5819e…” “一串乱七八糟的数字不好找” 如果换一个办法 “请把上周一的那个版本打包发布版本号是 v1.2” “好的按照 tag v1.2 查找 commit 就行” 所以tag 就是一个让人容易记住的有意义的名字它跟某个 commit 绑在一起。 Ⅱ. 创建标签
Git 使用的标签有两种类型 轻量级的lightweight 和 含附注的annotated。
轻量级标签就像是个不会变化的分支实际上它就是个指向特定提交对象的 引用。
而含附注标签实际上是存储在仓库中的一个 独立对象它有自身的校验和信息包含着标签的名字电子邮件地址和日期以及标签说明标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。
一般我们都建议使用含附注型的标签以便保留相关信息当然如果只是临时性加注标签或者不需要旁注额外信息用轻量级标签也没问题。
① 轻量级标签
在 Git 中打标签非常简单首先切换到需要打标签的分支上
[lirenVM-8-7-centos remote-test]$ git branch
* master 然后敲命令 git tag [name] 就可以打一个新标签
[lirenVM-8-7-centos remote-test]$ git tag v1.0 并且可以使用命令 git tag 查看所有标签
[lirenVM-8-7-centos remote-test]$ git tag
v1.0 默认标签是打在最新提交的 commit 上的。那如何在指定的 commit 上打标签呢❓❓❓
方法是 找到历史提交的 commit id然后打上就可以了示例如下
[lirenVM-8-7-centos remote-test]$ git log --prettyoneline --abbrev-commit
f167d57 update file.txt.
221511a add file.txt
e7f4971 Initial commit
[lirenVM-8-7-centos remote-test]$ git tag v0.9 f167d57
[lirenVM-8-7-centos remote-test]$ git tag
v0.9
v1.0 注意标签是按字母排序的而不是按时间顺序列出的。
我们可以用 git show [tagname] 查看标签信息。
[lirenVM-8-7-centos remote-test]$ git show v1.0
commit f167d579b2f9d07aa8b2b467192e667b98f9353c
Author: 利刃大大 2916776007qq.com
Date: Thu Jul 13 09:56:12 2023 0000update file.txt.Signed-off-by: 利刃大大 2916776007qq.comdiff --git a/file.txt b/file.txt
index 8d0e412..94a1c74 100644
--- a/file.txtb/file.txt-1 1,2 hello git
add new line;
\ No newline at end of file② 含附注类标签
Git 还提供可以创建带有说明的标签用 -a 选项 指定标签名-m 指定说明文字格式为
git tag -a [name] -m XXX [commit_id]
另外打完标签之后使用 tree .git 命令查看一下本地库可以看到 tags 其实就在 .git/refs/ 目录下
……
|-- ORIG_HEAD
|-- packed-refs
-- refs|-- heads| -- master|-- remotes| -- origin| |-- HEAD| -- master-- tags #如果打印出来其实就是对应的commit id|-- v0.9-- v1.0Ⅲ. 操作标签
如果标签打错了可以使用 -d 选项来进行删除
[lirenVM-8-7-centos remote-test]$ git tag
v0.9
v1.0
[lirenVM-8-7-centos remote-test]$ git tag -d v0.9 # 删除v0.9标签
Deleted tag v0.9 (was f167d57)
[lirenVM-8-7-centos remote-test]$ git tag
v1.0 因为创建的标签都只存储在本地不会自动推送到远程。所以打错的标签可以在本地安全删除。
如果要推送某个标签到远程使用命令 git push origin tagname
[lirenVM-8-7-centos remote-test]$ git tag
v1.0
[lirenVM-8-7-centos remote-test]$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitgitee.com:lirendada/remote-test.git* [new tag] v1.0 - v1.0 此时查看远端码云看到了标签已经被更新 当然如果你本地有很多标签也可以一次性的全部推送到远端
git push origin --tags 如果标签已经推送到远程要删除远程标签就麻烦一点先从本地删除
[lirenVM-8-7-centos remote-test]$ git tag
v1.0
[lirenVM-8-7-centos remote-test]$ git tag -d v1.0
Deleted tag v1.0 (was f167d57) 然后从远程删除。删除命令也是 push但是格式如下
[lirenVM-8-7-centos remote-test]$ git push origin :refs/tags/v1.0
remote: Powered by GITEE.COM [GNK-6.4]
To gitgitee.com:lirendada/remote-test.git- [deleted] v1.0 在码云上查看确实删除成功