乐趣区

关于git:使用-git-tag-给项目打标签

随着开发的深刻,一些开发的标准也在缓缓落实。对我的项目的每个版本打上标签就是其中很重要的一项。本文用来记录打标签的一些惯例操作。

应用命令行提醒

应用命令行提醒查看 tag 相干命令行:

$ git tag -h

创立标签

通过 git tag <tagname> 创立一个标签:

$ 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 <key> 自定义 tag 排序

$ git tag --sort "tagger"

查看单个标签

应用 git show <tagname> 命令查看标签详细信息

$ 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 <tagname> 删除本地仓库上的标签:

$ git tag -d v1.0.9
已删除标签 'v1.0.9'(曾为 fb8fd3e)

而后用 git push <remote> :refs/tags/<tagname> 更新近程仓库:

$ git push origin :refs/tags/v1.0.9
To github.com:hellomrbigshot/react-m-editor.git
 - [deleted]         v1.0.9

或者间接用 git push origin --delete <tagname> 间接删除近程标签:

$ 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 <message> 增加附加信息:

$ git tag v2.0.0 -m "version 2.0.0 released"

这样就对最新的提交增加了一个带从属信息的 tag。
增加多行信息能够增加多个 -m "<message>"

$ git tag v2.0.0 -m "version 2.0.0 released" -m "rebuild with react hooks" -m "support typescript"

这时候能够用 git tag -n<n> 查看 n 行的 tag 信息:

$ git tag -n3 // 查看三行的 tag 信息
v1.0.0          version 1.0.0 released
    
    support typescript
v1.0.6          version 1.0.6 released
    
    new version
v1.0.9          version 1.0.9 released
v2.0.0          version 2.0.0 released

对于已有的 tag,咱们想要编辑它的信息,除了删除这个 tag 从新打 tag 之外还能够用git tag <tagname> <tagname>^{} -f -m "<new message>" 批改 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 +0800

first commit

commit ab5666cfdf221c8a5b55b275b190fb8df440e985 (tag: v1.0.0)
Author: hellomrbigshot <1994yechen@gmail.com>
Date:   Thu Aug 22 00:55:59 2019 +0800

    version 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

退出移动版