前言

正文开始之前,我想我们需要弄明白几个问题:

  1. tag 是什么?
  2. 使用tag 的好处?
  3. tag 和 branch 的区别以及使用场景?
  • tag 是什么?
    tag , 翻译过来是标签的意思,顾名思义,标签是为了标记某种事物。
    tag 是 Git 版本库的一个快照,指向某个 commit 的指针。

  • 使用tag 的好处?
    tag 的存在,是因为我们需要这种标记的功能。目前的项目开发中,当发布版本时 tag 就派上用场了。例如 v1.0.1,v1.0.2…
    另外,git 提供了 tag 的增删改查一系列操作,在 tag 的使用上,可谓非常之方便。

  • tag 和 branch 的区别以及使用场景?
    想到这里,你可能觉得 tag 和 branch 有点相似。没错,的确是有点像,但是它们的职责分工和本质都是不同的。
    tag 对应某次 commit, 是一个点,是不可移动的。
    branch 对应一系列 commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。

    所以,两者的区别决定了使用方式,改动代码用 branch ,不改动只查看用 tag。

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

tag 的简单使用

以下命令都是我使用 tag 过程中一般会使用到的,可以说都是常用命令。

1.创建标签

需要说明的是,创建 tag 是基于本地分支的 commit,而且与分支的推送是两回事,就是说分支已经推送到远程了,但是你的 tag 并没有,如果把 tag 推送到远程分支上,需要另外执行 tag 的推送命令。

git tag <tagName> //创建本地tag
git push origin <tagName> //推送到远程仓库

若存在很多未推送的本地标签,你想一次全部推送的话,可以使用一下的命令:

git push origin --tags

以上是基于本地当前分支的最后的一个 commit 创建的 tag ,但是如果不想以最后一个,只想以某一个特定的提交为 tag ,也是可以的,只要你知道 commit 的 id。

git log --pretty=oneline //查看当前分支的提交历史,里面包含 commit id
git tag -a <tagName> <commitId>

2.查看标签

查看本地某个 tag 的详细信息:

git show <tagName>

查看本地所有 tag :

//下面两个命令都可以
git tag
git tag -l

查看远程所有 tag:

git ls-remote --tags origin

3.删除标签

本地 tag 的删除:

git tag -d <tagName>

远程 tag 的删除:

git push origin :<tagName>

4.重命名标签

这个本质上是删除掉旧名字 tag ,然后再新建新名字 tag ,然后实现重命名的作用。

如果 tag 只存在本地,那么只需要删除本地的旧名字 tag ,然后新建新名字 tag:

git tag -d <oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到远程仓库

若已经推送到远程了,那么不仅要删除本地的,还要删除远程的,再重新创建和推送:

git tag -d <oldTagName>
git push origin :<oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到远程仓库

5.检出标签

命令如下:

git checkout -b <branchName> <tagName>

因为 tag 本身指向的就是一个 commit,所以和根据 commit id 检出分支是一个道理。
但是需要特别说明的是,如果我们想要修改 tag 检出代码分支,那么虽然分支中的代码改变了,但是 tag 标记的 commit 还是同一个,标记的代码是不会变的,这个要格外的注意。

来源:https://blog.csdn.net/qq_32452623/article/details/73949509

git tag 和 branch 的区别以及使用场景相关推荐

  1. git tag和branch的区别

    命令 區別 git tag 發佈的可下載的軟件包 git branch 所以兩者之間沒有必然聯繫.

  2. tag 和branch的区别

    tag 和branch的区别 Git tag是一系列commit的中的一个点,只能查看,不能移动. branch是一系列串联的commit的线. git tag的用法 我们常常在代码封板时,使用git ...

  3. git tag和分支的区别_GIT常用命令大全

    Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. 克隆远程文件: git clone https://gitee.com/abcd/ ...

  4. SVN中tag和branch的区别

    在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆. 在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别.至于何时用tag ...

  5. git reset三种模式区别和使用场景(hard,soft,mixed)

    简单的理解三种模式: hard reset之后,以仓库为准,仓库,暂存区和工作区保持一致,不一致的全部清除: soft reset之后,工作区内容不变,只更新仓库内容,差异保留在index暂存区: m ...

  6. git branch分支创建、切换、合并,git tag标签

    一)Git分支简介 每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作. 列出分支命令:git branch 创建分支命令:git bra ...

  7. Git 处理tag和branch的命令

    最近想给GitHub 上的项目设置tag,可是使用GitHub Desktop,找了一圈都没找到快速设置Tag 的地方,最后只能通过终端命令来添加了. 想要查看Git 的命令,可以使用 git --h ...

  8. 查看git当前tag_git 切换到tag或branch分支

    git查看tag git查看tag命令: ershixiongdeMacBook-Pro:spring-boot zzs$ git tag v2.2.0.M1 v2.2.0.M2 v2.2.0.M3 ...

  9. git tag创建、远程推送、回退以及强推push -f

    一.给本地仓库分支打轻量级tag标签 1.在Git中打标签非常简单,首先,切换到需要打标签的分支上: $ git branchdevwhdgray * masteroptimize_sel_drive ...

最新文章

  1. js new 运算符到底做了什么?
  2. C# MongoDB简单增删改查使用
  3. C++ class、struct区别
  4. 某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1。使用非递归的算法求解满足要求的n值的程序。
  5. C++重载->和*运算符
  6. 常见机器学习算法思想简单梳理
  7. eclipse设置黑色主题
  8. iShot--Mac最强截图工具
  9. 美赛常用查数据查文献网站
  10. “Chart“ 图表控件基本操作
  11. 通俗讲解深度学习和神经网络!
  12. 【渝粤题库】陕西师范大学201461 司法文书写作作业(高起专)
  13. Oracle+mybatis+Java批量插入如何提升效率(10W级)
  14. 【评测】Tecan品牌系列产品
  15. 记一个openwrt reboot异步信号处理死锁问题
  16. 我是没有志气的程序员
  17. DataSheet查询网站
  18. Linux Glibc幽灵漏洞紧急修补方案;Centos7升级内核到3.18
  19. ffmpeg中av_log的实现分析
  20. CES Asia专题|栩栩如生!Artec3D现场展示其3D扫描技术

热门文章

  1. 很多人痛恨的4S店是否会被取代
  2. 帝国建站php,最受欢迎的9大PHP建站系统
  3. Android优秀开源项目
  4. C++游戏服务器开发视频教程
  5. inno setup技巧篇
  6. 吉大计算机转专业素质测试,通知|关于吉林大学2020级本科生考核转专业(类)工作的通知...
  7. Qt开发之画图画一把尺子入门案例项目分享
  8. 阿里巴巴股票缘何大跌?
  9. 赣州seo教您如何利用文章页来做长尾关键词优化?
  10. 抖音如何上大热门 视频批量md5绿色版