创建 Git 标签
为了创建一个 git 标签,你需要运行以下命令:
git tag <name-of-tag>
在创建标签时,将语义标识符放入存储库的状态而不是 <name-of-tag>。
Git 支持两种标签:带注释的标签和轻量级标签。
这两个标签之间的区别在于它们存储的元数据量。
另一个区别是带注释的标签是公共的,轻量级标签是私有的。
检查git标签
在 git checkout 命令的帮助下,我们可以检查仓库的状态。
此命令会将 repo 置于单独的 HEAD 状态。
因此,更改将创建一个新的单独提交,而不是更新标签,它不会成为任何分支的一部分。
此提交只能通过 SHA 哈希访问。
git checkout v1.3
轻量级标签
下面的命令创建一个标识为 v1.3-lw 的轻量级标签。
它们是在没有 -a、-s 或者 -m 选项的情况下创建的。
轻量级标签生成一个新的标签校验和,将其存储在 .git/目录中。
git tag v1.3-lw
标记旧提交
默认情况下, git tag 在 HEAD 提到的提交上创建一个标签。
它可以作为对特定提交的引用传递。
因此,传递的提交将被标记而不是默认为 HEAD。
运行 git log 命令以输出旧提交的列表:在下面的示例中,合并分支 'feature'commit 用于新标签。
要传递给 Git,必须将 SHA 哈希引用到提交:
git log --pretty=oneline 29389857951b64cf874c3557a0f3547bd83b899s Merging branch 'crossword' b4g5697498bd301d84096da251c98a07c7723e65 init method for crossword 89f3gaab4479697da7686c15f77a3d64d9165190 little changes in logic 3hy4a271eda8725415634dd79daabbc4d9b6008e Merging branch 'how-it-works'
运行 git tag 命令,为上一个示例中选择的提交生成带有 v1.2 ID 的新注释提交:
git tag -a v1.2 29389857951b64cf874c3557a0f3547bd83b899s
说明
标签是显示 Git 历史记录中特定点的引用。
标记的主要功能是在 Git 历史记录中捕获一个标记版本发布的点。
标签不会改变。
创建标签后,它没有提交历史记录。
删除git标签
我们可以绕过 -d 选项删除标签,并将标签标识符删除到 git 标签。
我们可以在下面找到此操作的示例:
git tag v1 v2 v3 git tag -d v1 git tag v2 v3
git将标签推送到远程
为了将多个标签推送到一起,我们应该将 --tags 选项传递给 git push 命令,如果另一个用户克隆了一个存储库,他们将获得新标签。
git push oroirn v1.3 Counting objects: 9, done. Delta compression using up to 5 threads. Compressing objects: 100% (8/8), done. Writing objects: 100% (12/12), 2.05 KiB | 0 bytes/s, done. Total 12 (delta 3), reused 0 (delta 0) To git@github.com:gr8/gittagdocs.git * [new tag] v1.3 -> v1.3
git更换旧标签
如果尝试使用现有标签标识符标记较旧的提交,则会发生错误。
我们应该使用 -f FORCE 选项来更新现有标签。
它将取消标记标识符的任何现有内容。
git tag -a -f v1.3 29389857951b64cf874c3557a0f3547bd83b899s
带注释的标签
Git 数据库将这些标签存储为完整的对象。
一些另外的元数据存储在带注释的标签中。
这些可以是标记者姓名、电子邮件和日期。
带注释的标签包括一条标记消息,就像在提交的情况下一样。
出于安全目的,它们还可以使用 GPG(GNU Privacy Guard)进行签名和验证。
运行下面的命令,我们可以使用 v1.3 id 创建一个新的带注释的标签。
然后,配置的默认文本编辑器将显示提示进一步输入元数据。
git tag -a v1.3
标签列表
运行下面的代码以列出存储的标签:
git tag
结果,我们将获得以下输出:
v0.10.0 v0.10.0-rc1 v0.11.0 v0.11.0-rc1 v0.11.1 v0.11.2 v0.12.0 v0.12.0-rc1 v0.12.1 v0.12.2 v0.13.0 v0.13.0-rc1 v0.13.0-rc2
我们可以使用带有通配符表达式的 -l 选项来清除标签列表:
git tag -l *-rc* v0.10.0-rc1 v0.11.0-rc1 v0.12.0-rc1 v0.13.0-rc1 v0.13.0-rc2 v0.14.0-rc1 v0.9.0-rc1 v15.0.0-rc.1 v15.0.0-rc.2 v15.4.0-rc.3