标签:情况 历史 tags 节点 如何 rgba 概念 重要 cal
像其它版本操作系统一样,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
以local_branch_b1分支为例,对本地仓库做更新,commit后再push。 push本地带tag的代码到远程仓库并不会将tag push到远程仓库
git push remote_repo_localname localtagname
检出标签一般是从标签标记的代码状态开辟新分支
下面示例中master_v1.0tag没有push到远程仓库,git使用下面命令是从本地仓库检出tag创建新分支,tag检出后远程也没有对应的分支与之建立追踪关系。
git checkout -b [localbranchname] [tagname]
如果远程标签所在分支与本地分支已有追踪关系直接pull代码后有会带tag吗?带tag直接在本地检出对应tag 在local_branch_b1分支实验,这个分支有所有commit的提交
实验证明这种方法可以操作
如果远程标签所在分支与本地分支没有追踪关系,直接拉取分支到本地然后再本地检出tag
git tag -d tagname
删除本地tag,即使当前分支没有该tag对应的commit也能删除成功
git push remote_repo_localname :refs/tags/remotetagname 删除远程仓库tag
删除前
删除操作
删除后
标签:情况 历史 tags 节点 如何 rgba 概念 重要 cal
原文地址:https://www.cnblogs.com/flags-blog/p/14825109.html