持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
Git 标签管理
标签是为了更方便地参考提交而给它标上易懂的名称。我们可以使用标签功能为我们的提交打上标签,并以此来创建版本。比如我们常见的版本号 v0.0.1, v0.0.2
等
Git 标签有以下两种:
- 轻标签(轻量级标签)
- 非常简略,只需要添加名称即可
- 注解标签
- 比较详细,包含作者、消息等,我们可以添加名称、注解消息、签名等等
一般情况下,发布标签都是采用注解标签的。可以详细展示信息。轻标签的用途一般是在本地上暂时使用或者一次性使用的。
添加轻标签
它的语法是
git tag <tagname>
我们在main分支新增一个标签
$ git tag nutcat001
它不会返回任何信息,我们可以通过 git tag
来查看当前的标签名
$ git tag
nutcat001
也可以在历史记录中查看到标签信息
$ git log --decorate
commit bff91551b0f99a2b0983ee57a065ee8f9007792b (HEAD -> main, tag: nutcat001, origin/main)
Author: FelixWuu <账号信息>
Date: Thu Oct 6 23:25:36 2022 +0800
test: diff
添加注解标签
上面的轻标签仅仅有个名字,我们需要给标签加上更加详细的信息
$ git tag -a v0.0.1
要创建带注释的标记,需要使用git tag -a
命令。这是你会进入一个编辑页面,这与操作 vim 界面是一样的,只需要按下 i
键然后输入你想输入的信息,然后 !wq
保存并退出。这类似于指定提交消息。如果想在命令行中就指定消息,可用-m
选项:git tag -a <tag-name> -m <tag-message>
。
然后我们可以使用 git show
查看版本信息
$ git show v0.0.1
tag v0.0.1
Tagger: FelixWuu <账户信息>
Date: Fri Oct 7 23:11:49 2022 +0800
First version.
commit bff91551b0f99a2b0983ee57a065ee8f9007792b (HEAD -> main, tag: v0.0.1, tag: nutcat001, origin/main)
Author: FelixWuu <账户信息>
Date: Thu Oct 6 23:25:36 2022 +0800
test: diff
diff --git a/example.txt b/example.txt
index f77115b..a6f8ef4 100644
--- a/example.txt
+++ b/example.txt
@@ -6,4 +6,6 @@ I'm used to merging branches with git merge.
First version.
:使用git tag -a v0.0.1
后,我在文本编辑器中编辑的标签信息Tagger
:创建者
对旧标签打 tag
如果我想对旧的版本打标签呢?我们只需要在 tag 名后面加上对应的 commit id 即可,比如
$ git log --oneline
bff9155 (HEAD -> main, tag: v0.0.1, tag: nutcat001, origin/main) test: diff
7ceb84c doc: 03.reslove conflict
...more commit info
$ git tag v0.0.2 7ceb84c
$ git tag
nutcat001
v0.0.1
v0.0.2
$ git show v0.0.2
commit 7ceb84c611e686118ece36bfe09637a8b251a068 (tag: v0.0.2)
...more info
如上步骤,我首先使用 git log --oneline
,可以看到以往的提交历史,然后我们上一个提交历史是7ceb84c doc: 03.reslove conflict
,是我写完文章后提交的。然后我们只需要在起的标签名后面指定commit id即可。比如上一个提交的commit id是7ceb84c
git show 显示的信息非常多,比如还会把个人账号显示出来。我们可以使用
git tag -n
$ git tag -n nutcat001 test: diff v0.0.1 First version. v0.0.2 doc: 03.reslove conflict
这里可以快捷显示标签信息,其中
nutcat001
和v0.0.2
是轻量级标签,所以默认用 commit 时填写的信息作为描述,v0.0.1
是注解标签,它的信息是由我在创建标签时写入的,
删除标签
若要删除标签,在tag命令指定 -d选项执行。
$ git tag -d nutcat001
Deleted tag 'nutcat001' (was bff9155)
$ git tag -d v0.0.2
Deleted tag 'v0.0.2' (was 7ceb84c)
$ git tag -n
v0.0.1 First version.
推送标签到远程
$ git push origin --tags
Enumerating objects: 1, done.
Counting objects: 100% (1/1), done.
Writing objects: 100% (1/1), 166 bytes | 166.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/FelixWuu/git_test
* [new tag] v0.0.1 -> v0.0.1
我们之前介绍删除标签,只是删除了本地的标签,那么应该如何删除远程的标签呢?
本地删除标签后,要在远程仓库上也删除,需要手动将标签引用(tag refs)推送到远程。
$ git push origin :refs/tags/tagname
这个tagname就是你本地已删除的tag