分布式版本控制系统 Git | 六
Git 基础 | 标签管理
查看标签
使用 git tag
是查看所有的标签:
$ git tag
v0.2
v1.0
这个命令是以字母顺序输出结果的。
创建标签
使用 git tag
命令,是创建标签最简单的方式。例如:
$ git tag v1.2
使用 git tag
查看标签
$ git tag
v0.2
v1.0
v1.2
这个命令,默认标签是打在最新提交的 commit
上的。这种方式打的标签属于轻量标签(lightweight)。
轻量标签(lightweight): 是一个特定提交的引用。
还有一个标签是带注释的标签,就是附注标签(annotated)。附注标签(annotated) 是存储在 Git 数据库的一个完整对象。创建附注标签,Git 会创建一个标签对象,然后编写一个引用以指向该对象,而不是直接指向提交。
附注标签,可以使用 git tag
,用 -a
指定标签名,-m
指定说明文字:
$ git tag -a v1.2.1 -m "change version"
$ git tag
v0.2
v1.0
v1.2
v1.2.1
如果没有为附注标签指定一条信息,Git 会运行编辑器要求输入信息。
这时可以通过 git show
查看标签的信息与对应的提交信息:
$ git show v1.2.1
tag v1.2.1
Tagger: 大梦三千秋
Date: Sat Feb 8 19:39:26 2020 +0800
change version
commit 17a7565ace9d89ad1deb1a0974de053e68455767 (HEAD -> master, tag: v1.2.1, tag: v1.2)
Merge: 4ca343d f6e0cfb
Author: 大梦三千秋
Date: Thu Feb 6 16:59:56 2020 +0800
Fix issue 008 and update
这里输出的信息,包括打标签者的信息、打标签的日期时间、附注信息,然后就是显示具体提交的信息。
补充标签
因为打标签,默认是打在最新提交的 commit 上的。若是有时候,忘记打标签,可以在后期补充打标签。
方法是找到历史提交的 commit id,然后补充打上去:
$ git log --pretty=oneline --abbrev-commit
17a7565 (HEAD -> master, tag: v1.2.1, tag: v1.2) Fix issue 008 and update
4ca343d Fix issue 008
f6e0cfb (tag: v1.0, dev) update readme.md.
24c7079 (tag: v0.2) Merge branch
30e4b10 Merge branch 'dev'
80565d0 Rename file
ebbd604 add DM_FILE
b815ff0 update readme.txt.
假设要对 add DM_FILE
这次提交打标签,对应的 commit id 是 ebbd604
,只要输入如下的命令即可补充标签:
$ git tag -a v0.1 ebbd604
$ git tag
v0.1
v0.2
v1.0
v1.2
$ git show v0.1
tag v0.1
Tagger: 大梦三千秋
Date: Sat Feb 8 19:48:50 2020 +0800
version 0.1
commit ebbd604310d486a39062c378dff2f9242f10b381 (tag: v0.1)
Author: 大梦三千秋
Date: Thu Feb 6 14:51:31 2020 +0800
add DM_FILE
...
推送标签
默认情况下,git push
命令并不会传送标签到远程仓库服务器上面。创建完标签后,必须显式地推送标签到共享服务器上。
使用 git push
进行推送:
$ git push ag v1.2.1
Enumerating objects: 1, done.
Counting objects: 100% (1/1), done.
Writing objects: 100% (1/1), 183 bytes | 61.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-3.8]
To gitee.com:damengsanqianqiu/about_git.git
* [new tag] v1.2.1 -> v1.2.1
若是,一次性推送全部尚未推送到远程的本地标签,使用 git push
:
$ git push ag --tags
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 476 bytes | 158.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-3.8]
To gitee.com:damengsanqianqiu/about_git.git
* [new tag] v0.1 -> v0.1
* [new tag] v0.2 -> v0.2
* [new tag] v1.0 -> v1.0
删除标签
如果标签打错的情况下,是可以删除的,使用下面的命令即可:
$ git tag -d v0.2
Deleted tag 'v0.2' (was 5f3b0c7)
这里需要注意,这个操作并不会同步删除已经推送到远程的标签。这时候必须使用下面的命令 git push
来更新远程仓库:
$ git push ag :refs/tags/v0.2
remote: Powered by GITEE.COM [GNK-3.8]
To gitee.com:damengsanqianqiu/about_git.git
- [deleted] v0.2
总结
- 命令
git tag
可以查看所有标签。 - 命令
git tag
用于创建轻量标签; - 命令
git tag -a
可以指定标签信息,创建附注标签;-m "blablabla..." - 命令
git push
推送本地标签到远程; - 命令
git push
推送全部未推送到远程的标签;--tags - 命令
git tag -d
可以删除一个本地标签; - 命令
git push
可以删除一个远程标签。:refs/tags/
以上就是本篇的主要内容
《Git 基础》部分的内容,在这里就已经介绍完毕。后面会介绍另一块的内容 《Git 分支》。敬请期待!
欢迎关注微信公众号《书所集录》