git入门(三):git标签操作
git标签操作
概念:
像其它版本操作系统一样,git可以给历史某个提交打上标签,以示重要。比较有代表性的是人们使用标签来标记发布节点例如v1.0 v1.2等。标签是指某个分支的某个特定时间点状态,通过标签可以很方便的切换到标签标记时分支对应的状态。
重点:标签是与commit对应的,对应到具体的某一次commit。而且仅仅与commit相关,下面的示例中会体现到。
标签操作需要掌握的基础命令
- 创建标签
- 列出已有标签
- 将标签推送至远程仓库
- 检出标签
- 删除标签
创建标签、查询已有标签
git tag tagname
git tag

验证标签与分支的关联性,在master分支创建的标签在其它分支不可见???本地其它分支竟然能够看到master分支创建的标签

通过git log查看历史记录发现,其它分支之所以能够查看master分支创建的tag是因为这些分支都是从master当前commit状态新建的分支,tag是和commit id关联,其它分支有这个commit记录就会查询到这个commit对应的tag。从这点来说tag是全局的tag,只要分支有这个commit就能看到tag,与分支以及tag创建的先后顺序无关。



local_branch1相比master有更新的commit记录,如果在此分支创建tag应当与最新的commit关联。由于master没有这个commit所以应该看不到这个标签。下面进行验证
验证情况与预期有出入:master上git tag能够看到这个标签,但是git show tagname查看详情,这个tag关联的分支没有master


创建、查询标签总结:
- 哪个分支创建的标签默认与最近一次commit关联
- 所有分支git tag能够查询到所有的tag信息,即使这个tag关联的commit不是当前分支的commit
将标签推送至远程仓库
- push带标签的commit id到远程仓库会自动push标签吗?
以local_branch_b1分支为例,对本地仓库做更新,commit后再push。 push本地带tag的代码到远程仓库并不会将tag push到远程仓库


- push tag到远程仓库
git push remote_repo_localname localtagname


检出标签
检出标签一般是从标签标记的代码状态开辟新分支
- 这里的tag是本地还是远程的tag,从标签检出的新分支会不会带默认tag?
下面示例中master_v1.0tag没有push到远程仓库,git使用下面命令是从本地仓库检出tag创建新分支,tag检出后远程也没有对应的分支与之建立追踪关系。
git checkout -b [localbranchname] [tagname]


- 本地没有的标签如何从远程仓库检出
如果远程标签所在分支与本地分支已有追踪关系直接pull代码后有会带tag吗?带tag直接在本地检出对应tag 在local_branch_b1分支实验,这个分支有所有commit的提交
实验证明这种方法可以操作
如果远程标签所在分支与本地分支没有追踪关系,直接拉取分支到本地然后再本地检出tag

删除tag
git tag -d tagname
删除本地tag,即使当前分支没有该tag对应的commit也能删除成功

git push remote_repo_localname :refs/tags/remotetagname 删除远程仓库tag
删除前

删除操作

删除后

浙公网安备 33010602011771号