Git Tags 使用简介

Alan

Alan

Maintainer of blog

添加 tag#

git tag your_tag_name
git tag -a your_tag_name -m "tag describe"

列出所有 tag#

git tag
git describe --tags

删除本地 tag#

git tag --delete your_tag_name

删除远程 tag#

你可以向远程仓库推送一个空引用的同名tag:

git push origin :your_tag_name

或者更具体一点的方式, 是使用--delete选项(如果你使用的git版本低于1.8.0使用-d代替):

git push --delete origin your_tag_name

需要注意的是, Git有标签(tag)命名空间和分支(branch)命名空间,所以你可能存在标签名和分支名同名的情况,如果你想明确删除的是指定名称的标签,而不想误删分支的话,可以在执行标签删除时指定完全限定的ref:

git push origin :refs/tags/your_tag_name
note

当你推送一个分支(branch)、标签(tag)、或者其他ref到远程仓库时,都涉及到需要指定"哪个仓库(repo),源是什么(source),推送到哪儿(destination)"

git push remote-repo source-ref:destination-ref

一个真实环境的例子是推送你本地的master分支到远程的master分支:

git push origin refs/heads/master:refs/heads/maser

因为有默认路径,所以上面的可以简写成:

git push origin master:master

标签(tags)的工作方式是一样的:

git push origin refs/tags/release-1.0:refs/tags/release-1.0

可以简写成:

git push origin release-1.0:release-1.0

上面删除标签的命令(git push origin :your_tag_name)省略了源引用(source ref),相当于推送一个空(nothing)到目的地(destination), 也就相当于在远程仓库删除了标签的ref。

切换标签#

git checkout tags/<tag_name> -b <branch_name>

获取所有标签#

git fetch --all --tags --prune

推送标签到远程仓库#

git push --tags