vimer linux kernel 爱好者

git tag 与 branch联用

2022-03-23
git

一直对 git tag不是了解的特别深入,现在有时间坐下来仔细写一写它了。

主要参考这篇文章.

tag就是一个标签,方便开发者在某个时刻查看内容,对,是静态的。可以想象成时间线上的flag。

tag对应某系commit, branch对应一串commits,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。所以,改动代码用branch,查看代码用tag。

tag和branch可以配合使用。比如,已经发布了 v0.1 v0.2 v0.3三个版本,这个时候,如果想在v0.2的基础上(也就是不改动源代码当前)修改代码后发布v0.4,就可以检出v0.2作为branch然后作为开发分支,等功能完成后再次打上一个v0.4的tag发布。

tag的简单使用

创建tag

git tag <tagName> # 经常以版本号
git push origin <tagName> //推送到远程仓库
git push origin --tags  #一次推送本地多条微推送的tags

以上是基于本地最后一次commit创建的tag,如果想以某次特定的 commmit 创建tag,则需如下:

git tag -a <tagName> <commitId>

查看tag

查看某个tag的详细情况:

git  show <tagName>

查看本地所有的tag:

git tag 
git tag -l

查看远程所有的tag:

git ls-remote --tags origin

删除tag

git tag -d <tagName>  # 本地tag的删除
git push origin :<tagName> # 删除远程tag

修改tag

本意其实就是先删除旧的tag,然后创建新的tag.

如果只存在于本地,在首先删除tag,然后新建tag就可以。

git tag -d <oldTag>
git tag <newTag>
git push origin <newTag> # 推送到远程tag

如果已经推送到远程了,则不仅需要删除本地的tag,则还需要删除远程的tag,再重新创建和推送:

git tag -d <oldTag> # 删除本地的tag
git push origin :<oldTag> # 删除远程的tag
git  tag  <newTag> #创建新的tag
git push origin <newtag> # 推送到远程仓库

检出tag

git checkout -b <branchName> <tagName>

Comments

Content