本篇文章,是基于我自用Windows(Win10)系统当做示例演示

本地仓库在:E:\test_git_rep

远程仓库是:git@github.com:lili40342/test_git_rep.git

描述测试环境的目的,是更好的解释测试过程,以免对你阅读造成不必要的麻烦

Git的标签管理

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Git 的标签虽然是版本库的快照,但其实它就是指向某个 commit 的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

Git 有 commit,为什么还要引入 tag?

“请把上周一的那个版本打包发布,commit 号是 6a5819e…”

“一串乱七八糟的数字不好找!”

如果换一个办法:

“请把上周一的那个版本打包发布,版本号是 v1.2”

“好的,按照 tag v1.2 查找 commit 就行!”

所以,tag 就是一个让人容易记住的有意义的名字,它跟某个 commit 绑在一起。

创建标签

在 Git 中打标签非常简单,首先,切换到需要打标签的分支上(必要情况下),博文开始我已经阐述我的测试环境,我这里测试环境只有一个分支:

#Git Bash下执行的
$ git branch
* master
$ git switch master
Switched to branch 'master'

在这之前,我特意了多操作了几次 commit 。

然后,敲命令git tag <name>就可以打一个新标签:

$ git tag v1.0

可以用命令git tag查看所有标签:

$ git tag
v1.0

我去,就这么简单?!稍等,听我狡辩。

默认情况下,标签是打在最新提交的 commit 上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?

方法是找到历史提交的 commit id,然后打上就可以了:

$ git log --pretty=oneline --abbrev-commit
203c6e3 (HEAD -> master, tag: v1.0) 新增两个文件
39c654b test

如上,可以看到我这个测试环境,只有两次提交,标签会默认的打在最新提交的 commit 上。比方说要对test这次提交打标签,它对应的 commit id是39c654b,敲入命令:

$ git tag v0.9 39c654b

再用命令git tag查看标签:

$ git tag
v0.9
v1.0

注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息:

$ git show v0.9
Author: Lee <Lee@163.com>
Date:   Wed Dec 7 17:22:21 2022 +0800testdiff --git a/test.java b/test.java
new file mode 100644
index 0000000..e69de29

可以看到,v0.9确实打在test这次提交上。

另外,还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字。比如:

$ git tag -a v0.9 -m "version 0.9 released" 39c654b

注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

操作标签

如果标签打错了,也可以删除:

$ git tag -d v0.9
Deleted tag 'v0.9' (was 39c654b)

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

如果要推送某个标签到远程,使用命令git push origin <tagname>

$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:lili40342/test_git_rep.git* [new tag]         v1.0 -> v1.0

或者,一次性推送全部尚未推送到远程的本地标签:

$ git push origin --tags

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

$ git tag -d v1.0
Deleted tag 'v1.0' (was 203c6e3)

然后,从远程删除。删除命令也是push,但是格式如下:

$ git push origin :refs/tags/v1.0
To github.com:lili40342/test_git_rep.git- [deleted]         v1.0

进阶 - Git的标签管理相关推荐

  1. 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流

    GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...

  2. Git学习笔记:标签管理以及GItHub

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  3. Git复习(六)之标签管理

    标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库 ...

  4. Git学习(四)标签管理

    标签管理 git学习参考 廖雪峰官方网站 git基本操作,一篇文章就够了! 一.标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候 ...

  5. 【GIT-3】GIT 的基础教程 分支管理 fixbug分支 Featur 冲突处理 标签管理 操作

    2019独角兽企业重金招聘Python工程师标准>>> [转载请注明出处!http://my.oschina.net/u/2337744/] 分支就是科幻电影里面的平行宇宙,当你正在 ...

  6. Git分支管理与标签管理(the last)

    开卷有益 有些人没见过汪洋,以为江河最为壮美:有些人一片透过落叶,便能看到整个秋天.读万卷书,行万里路,方能见天地之广阔. 正文部分 一.分支管理 解决分支冲突 当Git无法自动合并分支时,就得先解决 ...

  7. 代码管理平台介绍、安装svn、客户端使用svn、远程仓库、分支管理、标签管理、git别名、搭建git服务、安装gitlab、简单使用gitlab、备份和恢复

    22.1 代码管理平台介绍 现在的开发工作都是由团队合作来完成开发,通常都是团队中的每个人或者每几个人完成一个模块的开发,最后再将模块拼凑起来,形成一个完整的项目,这就涉及到了协同开发.在各个模块的开 ...

  8. 使用git进行源代码管理

    git是一款非常流行的分布式版本控制系统,使用Local Repository追踪代码的修改,通过Push和Pull操作,将代码changes提交到Remote Repository,或从Remote ...

  9. Laravel大型项目系列教程(五)之文章和标签管理

    Laravel大型项目系列教程(五)之文章和标签管理 本节教程将大概完成文章和标签管理. 1.文章管理 首先创建管理后台文章列表视图: $ php artisan generate:view admi ...

最新文章

  1. abaqus高性能服务器怎么用,高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF...
  2. 好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM
  3. HDU 2300 Crashing Robots
  4. 人才招聘丨 清华大学精准医学研究院招聘启事
  5. 各个版本spring的jar包以及源码下载地址
  6. Exchange Server 2013日记功能
  7. OpenShift 4 - 基于URL的应用路由
  8. 写给大忙人的维生素一览表【饮食健康规律】
  9. Thinkpad X200 开启 intel virtualization technology (VT-x)
  10. 在linux服务器上安装sublime编辑器
  11. 一款保险系统架构设计图
  12. easyui java下拉列表项目_EasyUI/TopJUI之如何动态改变下拉列表框ComboBox输入框的背景颜色...
  13. Python-nmap 使用文档
  14. kali Linux的设置和优化(双系统)
  15. 西勒振荡电路------multisim仿真
  16. java 3D学习笔记
  17. 五子棋游戏(JavaScript+JQuery+Canvas)
  18. app打包上传遇到的问题
  19. 简单 html 分页标签
  20. 欧几里得距离转换(EDT)算法

热门文章

  1. CNN和LSTM的输入数据维度
  2. 读书笔记——我知道的杨振宁(葛墨林/2022)
  3. Java变态题目(持续更新)
  4. 通信协议整理之 SPI 通信
  5. 数据资产价值评估与定价:研究综述和展望
  6. Matlab版本对应CUDA
  7. php 可视化模板编辑,MetInfo
  8. ORA-02396:超出最大空闲时间,请重新连接!
  9. java 语言的简介
  10. spring加载xsd文件