【Git技术专题】如何使用git中的tag进行版本开发控制?

简介: 【Git技术专题】如何使用git中的tag进行版本开发控制?

什么是tag


  • git仓库的tag是git版本库的一个标记,指向某个commit id标记的快照记录指针,所以,标签也是版本库的一个快照。
  • tag主要用于发布版本的管理一个当版本发布后,可以为git当前的HEAD(commit id)打上 v.1.0.1、v.1.0.2等这样的标签。
  • tag感觉跟branch有点相似,但是本质上和分工上是不同的。




tag的特征


  • tag对应某次commit节点, 是一个点,是不可移动的。
  • branch对应一系列commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。
  • 所以,两者的区别决定了使用方式,改动代码用branch ,不改动只查看用 tag。


tag 和 branch 的相互配合使用,有时候起到非常方便的效果,例如:已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布。就可以检出 v2.0 的代码作为一个 branch ,然后作为开发分支




创建标签


添加tag


git tag -a  -m "added description release notes" #

git tag用作上线发布的时候打tag处理:

处理命令为:
git tag -a v1.0-beta -m "v1.0 beta版本发布上线"
复制代码


创建轻量级标签,不用-a,-m等参数


例如


git tag v1.0
复制代码

给指定的commit打Tag


打Tag不必要在head之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和(通过git log获取)。

git tag -a v0.1.1 9fbc3d0
复制代码

可加-m添加注释


查看所有的tag版本


  • git tag :查看tag列表
  • git tag --list :查看tag列表
  • git tag -l  :同理查看tag列表

命令git checkout [tagname] 切换标签。


git checkout v1.0
复制代码

删除tag


git tag -d tagName
复制代码
删除本地名为“v1.0”的Tag


git tag -d v1.0
复制代码

git push origin :refs/tags/ # 删除一个远程标签


这时只能在本地可以看到自己新建Tag,在远程中央仓库中还是看不到在Tags下有如何内容,因为我们还没把它推送到中央仓库上



推送到远端


git push origin  # 推送一个本地标签到远程仓库

例如:

git push origin v1.0
复制代码
推送全部未推送过的本地标签


git push origin --tags 
复制代码

如果没有和远程没有同步,可以先拉下来


git pull --rebase origin master
复制代码

再上传


git push -u origin master
复制代码
推送所有标签
git push origin --tags
复制代码




此处对历史提交做tag处理


  • git log --pretty=oneline --abbrev-commit
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
复制代码

现在,假设在 v1.2 时你忘记给项目打标签,也就是在 “updated rakefile” 提交。 你可以在之后补上标签。 要在那个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和):


  • git tag -a v0.9 -m "v0.9版本发布上线"  # 对历史提交做tag处理



(总结)推送本地标签到远程仓库


  • git push origin v1.0-beta # 推送到远程仓库
  • git push origin v1.0-beta:refs/tags/v1.0-beta # 等效上一条
  • git push origin --tags # 一次性推送全部尚未推送到远程的本地tags

删除远程tag


  • git tag -d tag-name
  • git push origin :refs/tags/tag-name

覆盖原有的tag


  • git tag -f lilerong

查看相应标签的版本信息


git show tagName  //git show 命令,并连同显示打标签时的提交对象


idea中创建标签tag、并推送到远程仓库


创建tag


image.png

创建完成后,推送标签到远程仓库


接着输入tag名(一般都是有规则的 不是随便写的)


image.png

由于不是在当前最新版本打入的标签,push时需要选择push tags (all),不然不能push。

image.png

在GitLab标签中就可以看到刚才push的标签







相关文章
|
27天前
|
开发工具 git
记IDEA Git版本回退并push到远程操作
记IDEA Git版本回退并push到远程操作
29 1
记IDEA Git版本回退并push到远程操作
|
1月前
|
开发工具 git
【git 实用指南】git 修复错误提交,版本回退
【git 实用指南】git 修复错误提交,版本回退
26 1
|
3月前
|
开发工具 git 开发者
百度搜索:蓝易云【Git实际开发的流程】
以上是Git在实际开发中的一般流程。Git的分布式版本控制系统使得团队开发更加高效和灵活,并能有效管理项目的版本历史。
31 1
|
3月前
|
存储 开发工具 git
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
68 0
|
2天前
|
存储 安全 Linux
振南技术干货集:研发版本乱到“妈不认”? Git!(4)
振南技术干货集:研发版本乱到“妈不认”? Git!(4)
振南技术干货集:研发版本乱到“妈不认”? Git!(4)
|
2天前
|
Shell Linux 开发工具
振南技术干货集:研发版本乱到“妈不认”? Git!(2)
振南技术干货集:研发版本乱到“妈不认”? Git!(2)
|
1月前
|
开发工具 git
IDEA通过git回滚到某个提交节点或某个版本的操作方法
IDEA通过git回滚到某个提交节点或某个版本的操作方法
21 0
|
2月前
|
存储 Linux 开发工具
如何使用Git进行团队协作开发
【2月更文挑战第3天】Git是一款分布式版本控制系统,被广泛应用于软件开发、网站开发等领域。本文将介绍如何使用Git进行团队协作开发,包括Git的基本概念、常用命令以及如何避免冲突等内容。
|
2月前
|
Linux 开发工具 git
【开发专题_03】unable to access ‘https://github.com/deviantony/docker-elk.git/‘: Failed connect to github
【开发专题_03】unable to access ‘https://github.com/deviantony/docker-elk.git/‘: Failed connect to github
|
3月前
|
开发工具 git
GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件(二)
GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件(二)

相关实验场景

更多