使用 git tag 给项目打标签

随着开发的深入,一些开发的规范也在慢慢落实。对项目的每个版本打上标签就是其中很重要的一项。本文用来记录打标签的一些常规操作。
使用命令行提示 使用命令行提示查看 tag 相关命令行:

git tag -h

创建标签 通过 git tag 创建一个标签:
$ git tag v1.0.0 v1.0.0

默认标签是打在最新提交的commit上的。如果想给历史commit 打上标签,只需在后面加上 commit id 即可。
$ git tag v1.0.8 ba9f9e

上传标签 git push 并不会将 tag 推送到远程仓库服务器上,在创建完 tag 后我们需要手动推送 tag。
推送单个 tag:
$ git push origin v1.0.8 总共 0(差异 0),复用 0(差异 0),包复用 0 To github.com:hellomrbigshot/react-m-editor.git * [new tag]v1.0.8 -> v1.0.8

一次推送所有本地 tag:
$ git push origin --tags 总共 0(差异 0),复用 0(差异 0),包复用 0 To github.com:hellomrbigshot/react-m-editor.git * [new tag]v1.0.6 -> v1.0.6 * [new tag]v1.0.7 -> v1.0.7 * [new tag]v1.0.8 -> v1.0.8

查看标签列表 通过 git tag 查看所有标签
$ git tag v2.0.0 v1.0.6 v1.0.5 ......

通过 git tag -l "v1.0*" 查看 1.0.x 版本的tag
$ git tag -l "v1.0*" v1.0.6 v1.0.5 ......

git tag -l 等同于 git tag --list
也可以使用 git tag --sort 自定义 tag 排序
git tag --sort "tagger"

查看单个标签 使用 git show 命令查看标签详细信息
$ git show v1.0.8 commit 9f6866b4a1343a793b13809c2fc1b0b5daba9f9e (tag: v1.0.8) Author: hellomrbigshot <1994yechen@gmail.com> Date:Tue Apr 14 14:18:07 2020 +0800? add dark mode

删除标签 使用 git tag -d 删除本地仓库上的标签:
$ git tag -d v1.0.9 已删除标签 'v1.0.9'(曾为 fb8fd3e)

【使用 git tag 给项目打标签】然后用 git push :refs/tags/ 更新远程仓库:
$ git push origin :refs/tags/v1.0.9 To github.com:hellomrbigshot/react-m-editor.git - [deleted]v1.0.9

或者直接用 git push origin --delete 直接删除远程标签:
$ git push origin --delete v1.0.7 To github.com:hellomrbigshot/react-m-editor.git - [deleted]v1.0.7

然后同步到本地
git fetch --prune --prune-tags

注意: git fetch --prune --prune-tags 会强制同步远程 tag 到本地,所以会导致本地新建的未提交到远程服务器的 tag 也会被删除。
给标签添加信息 上文提到的创建标签属于创建轻量标签,我们还可以在创建标签时通过-m 添加附加信息:
$ git tag v2.0.0 -m "version 2.0.0 released"

这样就对最新的提交添加了一个带附属信息的 tag。
添加多行信息可以添加多个 -m ""
$ git tag v2.0.0 -m "version 2.0.0 released" -m "rebuild with react hooks" -m "support typescript"

这时候可以用 git tag -n 查看 n 行的 tag 信息:
$ git tag -n3 // 查看三行的 tag 信息 v1.0.0version 1.0.0 releasedsupport typescript v1.0.6version 1.0.6 releasednew version v1.0.9version 1.0.9 released v2.0.0version 2.0.0 released

对于已有的tag,我们想要编辑它的信息,除了删除这个tag重新打tag之外还可以用git tag ^{} -f -m "" 修改 tag 信息:
$ git tag v1.0.0 v1.0.0^{} -f -m "first commit" 已更新标签 'v1.0.0'(曾为 6991484)$ git show v1.0.0 tag v1.0.0 Tagger: hellomrbigshot <1994yechen@gmail.com> Date:Mon Aug 16 16:29:38 2021 +0800first commitcommit ab5666cfdf221c8a5b55b275b190fb8df440e985 (tag: v1.0.0) Author: hellomrbigshot <1994yechen@gmail.com> Date:Thu Aug 22 00:55:59 2019 +0800version 1.0.0

此时如果线上已经存在这个tag,我们修改后想将它推送到远程代码仓库需要加 -f 强制推送:
$ git push origin v1.0.0 To github.com:hellomrbigshot/react-m-editor.git ! [rejected]v1.0.0 -> v1.0.0 (already exists) error: 推送一些引用到 'github.com:hellomrbigshot/react-m-editor.git' 失败 提示:更新被拒绝,因为该标签在远程已经存在。$ git push origin -f v1.0.0 枚举对象中: 1, 完成. 对象计数中: 100% (1/1), 完成. 写入对象中: 100% (1/1), 165 字节 | 165.00 KiB/s, 完成. 总共 1(差异 0),复用 0(差异 0),包复用 0 To github.com:hellomrbigshot/react-m-editor.git + 6991484...db8e1aa v1.0.0 -> v1.0.0 (forced update)

参考 Git - 打标签
git-tag

    推荐阅读