进阶 - Git的标签管理
本篇文章,是基于我自用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的标签管理相关推荐
- 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...
- Git学习笔记:标签管理以及GItHub
前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...
- Git复习(六)之标签管理
标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库 ...
- Git学习(四)标签管理
标签管理 git学习参考 廖雪峰官方网站 git基本操作,一篇文章就够了! 一.标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候 ...
- 【GIT-3】GIT 的基础教程 分支管理 fixbug分支 Featur 冲突处理 标签管理 操作
2019独角兽企业重金招聘Python工程师标准>>> [转载请注明出处!http://my.oschina.net/u/2337744/] 分支就是科幻电影里面的平行宇宙,当你正在 ...
- Git分支管理与标签管理(the last)
开卷有益 有些人没见过汪洋,以为江河最为壮美:有些人一片透过落叶,便能看到整个秋天.读万卷书,行万里路,方能见天地之广阔. 正文部分 一.分支管理 解决分支冲突 当Git无法自动合并分支时,就得先解决 ...
- 代码管理平台介绍、安装svn、客户端使用svn、远程仓库、分支管理、标签管理、git别名、搭建git服务、安装gitlab、简单使用gitlab、备份和恢复
22.1 代码管理平台介绍 现在的开发工作都是由团队合作来完成开发,通常都是团队中的每个人或者每几个人完成一个模块的开发,最后再将模块拼凑起来,形成一个完整的项目,这就涉及到了协同开发.在各个模块的开 ...
- 使用git进行源代码管理
git是一款非常流行的分布式版本控制系统,使用Local Repository追踪代码的修改,通过Push和Pull操作,将代码changes提交到Remote Repository,或从Remote ...
- Laravel大型项目系列教程(五)之文章和标签管理
Laravel大型项目系列教程(五)之文章和标签管理 本节教程将大概完成文章和标签管理. 1.文章管理 首先创建管理后台文章列表视图: $ php artisan generate:view admi ...
最新文章
- abaqus高性能服务器怎么用,高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF...
- 好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM
- HDU 2300 Crashing Robots
- 人才招聘丨 清华大学精准医学研究院招聘启事
- 各个版本spring的jar包以及源码下载地址
- Exchange Server 2013日记功能
- OpenShift 4 - 基于URL的应用路由
- 写给大忙人的维生素一览表【饮食健康规律】
- Thinkpad X200 开启 intel virtualization technology (VT-x)
- 在linux服务器上安装sublime编辑器
- 一款保险系统架构设计图
- easyui java下拉列表项目_EasyUI/TopJUI之如何动态改变下拉列表框ComboBox输入框的背景颜色...
- Python-nmap 使用文档
- kali Linux的设置和优化(双系统)
- 西勒振荡电路------multisim仿真
- java 3D学习笔记
- 五子棋游戏(JavaScript+JQuery+Canvas)
- app打包上传遇到的问题
- 简单 html 分页标签
- 欧几里得距离转换(EDT)算法