目录
tag是用于去标记一个特定的commit。通常,在进行编译部署之前,我们需要对某一个即将release的版本进行tag,例如tag为release-v1.0。
tag基于某个commit来进行特定标识,生成一个带tag的类似branch,我们可以基于这个tag去生成新的分支,也可以根据tag切换到某个分支版本上,例如:
//生成新的branch,用tags/....去找tag
$ git checkout tags/<tag_name> -b <new_branch_name>
//比较:基于远程branch生成新分支,此语句直接可以将新分支进行set-upstream
$ git checkout origin/<remote_name> -b <new_branch_name>
//切换commit
$ git checkout tags/version 1.0
不过上述基于tag来checkout的前提,是要保证本地仓库中你有tags 的信息,所以要先fetch这些tags才能做出上述checkout指令,否则报错!!
// --all will fetch all the remotes.
// --tags will fetch all tags as well
$ git fetch --all --tags --prune
查看全部tags:
git tag
git tag --list 'v-*'
打tag分为两种方式,一种是直接打tag,打一个简单的标签
git tag v1.0
一个是打带注释的tag(annotated tags),此时后面可以通过 -m ,像提交commit一样备注你的评论以及其他信息
git tag -a v1.0 -m "Product Release"
在本地完成tag标记后,需要push到远程
git push --tags
git push --follow-tags
git push origin <tag_name>
如果是想更新远程的tag,用--force
git push origin <tag_name> --force
git tag -d <tag_name>
//注意要标明 origin
git push --delete origin <tag_name>
git clone <url> --branch=<tag_name>