分布式版本控制系统 Git | 六

分布式版本控制系统 Git | 六


Git 基础 | 标签管理


查看标签

使用 git tag 是查看所有的标签:

$ git tag
v0.2
v1.0

这个命令是以字母顺序输出结果的。

创建标签

使用 git tag <name> 命令,是创建标签最简单的方式。例如:

$ 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: 大梦三千秋 <[email protected]>
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: 大梦三千秋 <[email protected]>
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: 大梦三千秋 <[email protected]>
Date:   Sat Feb 8 19:48:50 2020 +0800

version 0.1

commit ebbd604310d486a39062c378dff2f9242f10b381 (tag: v0.1)
Author: 大梦三千秋 <[email protected]>
Date:   Thu Feb 6 14:51:31 2020 +0800

    add DM_FILE
...

推送标签

默认情况下,git push 命令并不会传送标签到远程仓库服务器上面。创建完标签后,必须显式地推送标签到共享服务器上。

使用 git push <remote> <tagname> 进行推送:

$ 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 <remote> --tags

$ 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 <remote> :refs/tags/<tagname> 来更新远程仓库:

$ 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

总结

  1. 命令 git tag 可以查看所有标签。
  2. 命令 git tag <tagname> 用于创建轻量标签;
  3. 命令git tag -a <tagname> -m "blablabla..." 可以指定标签信息,创建附注标签;
  4. 命令 git push <remote> <tagnmae> 推送本地标签到远程;
  5. 命令 git push <remote> --tags 推送全部未推送到远程的标签;
  6. 命令 git tag -d <tagname> 可以删除一个本地标签;
  7. 命令 git push <remote> :refs/tags/<tagname> 可以删除一个远程标签。

以上就是本篇的主要内容


《Git 基础》部分的内容,在这里就已经介绍完毕。后面会介绍另一块的内容 《Git 分支》。敬请期待!

欢迎搜索关注微信公众《书所集录》。

发布了82 篇原创文章 · 获赞 43 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45642918/article/details/104227918