zoukankan      html  css  js  c++  java
  • 【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的标签

    极限就是为了超越而存在的
  • 相关阅读:
    springcloud相关组件使用时的jar包
    day62-django-反向解析、路由分发、名称空间、伪静态、视图层(三板斧、JsonResponse、form表单上传文件、request对象方法、FBV与CBV)
    day61-django-数据的查改删、创建表关系 、请求生命周期流程图、路由层(路由匹配 无名分组 有名分组 无名有名是否可以混合使用 反向解析)
    AcWing487. 金明的预算方案题解(DP,分组背包)
    day60-django-静态文件配置、request方法、链接数据库、ORM操作
    day59-django-写一个简易版本的web框架、jinja2、web框架请求流程图、框架介绍、django基本操作
    day58-jQuery事件的阻止、委托、页面加载、动画、前端框架bootstrap、搭建图书管理系统
    day57-jQuery练习、操作标签、事件
    day56-js原生事件绑定-jQuery导入、查找标签
    day55-前端js-BOM与DOM操作
  • 原文地址:https://www.cnblogs.com/liboware/p/15100544.html
Copyright © 2011-2022 走看看