标签管理
理解标签
标签tag
,可以简单的理解为是对某次commit
的一个标识,相当于起了一个别名。例如,在项目发布某个版本的时候,针对最后一次commit
起一个v1.0这样的标签来标识里程碑的意义。
这有什么用呢?相较于难以记住的commit id
,tag
很好的解决这个问题,因为tag
一定要给一个让人容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使用标签就能很快定位到。
创建标签
在Git中打标签非常简单,首先,切换到需要打标签的分支上
$ git branch
* master
然后,敲命令git tag [name]
就可以打一个新标签:
$ git tag v1.0
可以用命令git tag
查看所有标签:
$ git tag
v1.0
默认标签是打在最新提交的commit上的。
那如何在指定的commit上打标签呢?方法是找到历史提交的commit id,然后打上就可以了,示例如下:
#历史记录
$ git log --pretty=oneline --abbrev-commit
97811abd1d43774aeb54fe32bf4fc76b2b0b170 (HEAD -> master, tag: v1.0, origin/master, origin/HEAD) add .gitignore
60e61ba update README.md
7ce3183 create file.txt
c6ce3f0 initial commit
# 对 Initial commit 这次提交打标签
$ git tag v0.9 c6ce3f0
$ git tag
v0.9
v1.0
注意,标签不是按时间顺序列出,而是按字母排序的。
可以用git show [tagname]
查看标签信息。
$ git show v1.0
commit 97811abd1d43774aeb54fe32bf4fc76b2b0b170 (HEAD -> master, tag: v1.0, origin/master, origin/HEAD)
Author: hyb91 <12345678@qq.com>
Date: Fri May 12 17:27:06 2023 +0800
add .gitignore
diff --git a/.gitignore b/.gitignore
...
Git还提供可以创建带有说明的标签,用-a指定标签名,-m指定说明文字,格式为:
git tag -a [name] -m "XXX" [commit_id]
另外,打完标签之后,使用tree .git命令查看一下你的本地库有什么变化,肯定能帮助你理解!
操作标签
如果标签打错了,也可以删除:
$ git tag
v0.9
v1.0
$ git tag -d v0.9
Deleted tag 'v0.9' (was c6ce3f0)
$ git tag
v1.0
因为创建的标签都存储在本地,不会自动推送到远程。
所以,打错的标签可以在本地安全删除。
如果要推送某个标签到远程,使用命令git push origin <tagname>
$ git tag
v1.0
$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:hyb91/git_teaching.git
* [new tag] v1.0 -> v1.0
此时,查看远端码云,看到了标签已经被更新!完美!
当然,如果你本地有很多标签,也可以一次性的全部推送到远端:
git push origin --tags
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
$ git tag
v1.0
$ git tag -d v1.0
Deleted tag 'v1.0' (was 97811ab)
然后,从远程删除。删除命令也是push,但是格式如下:
git push origin :refs/tags/v1.0
$ git push origin :refs/tags/v1.0
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:hyb91/git_teaching.git
- [deleted] v1.0
在码云上查看确实删除成功: