Git 之 git tag标签使用

目录

  • 一、简介
  • 二、本地tag操作
    • 1、创建tag标签
      • (1)创建轻量标签
      • (2)创建附注标签
    • 2、查看tag标签
      • (1)查看标签列表
      • (2)查看标签提交信息
      • (3)在提交历史中查看标签
    • 3、删除tag标签
  • 三、远程仓库tag操作
    • 1、推送tag标签到远程仓库
    • 2、删除远程仓库tag标签
  • 四、检出标签


一、简介

tag 可以称它为 标签

简单的理解,tag 就是对某次 commit 的一个标识,相当于起了一个别名。

例如,在项目发布某个版本的时候,针对最后一次 commit 起一个 v2.0 这样的标签来标识里程碑的意义。

tag 有两种类型的标签 :

  • 轻量标签(lightweight):只是某个 commit 的引用,可以理解为是一个 commit 的别名;

  • 附注标签(annotated):是存储在git仓库中的一个完整对象,包含打标签者的名字、电子邮件地址、日期时间以及其他的标签信息。它是可以被校验的,可以使用 GNU Privacy Guard (GPG) 签名并验证。


二、本地tag操作

1、创建tag标签

(1)创建轻量标签

# 直接给当前的提交版本创建一个【轻量标签】
$ git tag [标签名]# 给指定的提交版本创建一个 【轻量标签】
$ git tag [标签名] [提交版本]

例如:

$ git tag v2.0$ git tag v2.0 4489bac3

(2)创建附注标签

# 直接给当前的提交版本创建一个 【附注标签】
$ git tag -a [标签名称] -m [附注信息]# 给指定的提交版本创建一个【附注标签】
$ git tag -a [标签名称] [提交版本号] -m [附注信息]
  • -a:理解为 annotated 的首字符,表示附注标签;

  • -m:指定附注信息;

例如:

$ git tag -a v2.0 -m "v2.0版本正式发布"$ git tag -a v2.0-release 4489bac3 -m "v2.0版本正式发布"

2、查看tag标签

(1)查看标签列表

# 查看所有标签列表
$ git tag# 查看模糊匹配的标签列表
$ git tag -l [*标签名称筛选字符串*]  
$ git tag --list [*标签名称筛选字符串*]

例如:

$ git tag -l "*v2.0*"$ git tag --list "*v2.0*"

(2)查看标签提交信息

# 查看标签的信息,(轻量标签 和 附注标签 的信息是不一样的)
$ git show [标签名]

查看轻量标签

在这里插入图片描述

查看附注标签

在这里插入图片描述


(3)在提交历史中查看标签

$ git log --oneline --graph

在这里插入图片描述


3、删除tag标签

$ git tag -d [标签名称]

例如:

$ git tag -d test-2.0

在这里插入图片描述


三、远程仓库tag操作

1、推送tag标签到远程仓库

# 将指定的标签上传到远程仓库
$ git push origin [标签名称]# 将所有不在远程仓库中的标签上传到远程仓库
$ git push origin --tags

例如:

$ git push origin test-2.0

注:默认情况下,git push 命令并不会把标签推送到远程仓库中,必须手动地将 本地的标签 推送到远程仓库中


2、删除远程仓库tag标签

$ git push origin  :regs/tags/[标签名称]$ git push origin --delete [标签名称]

例如:

$ git push origin :regs/tags/test-2.0$ git push origin --delete test-2.0

四、检出标签

检出标签的理解:是在这个标签的基础上进行其他的开发或操作。

检出标签的操作实质:是以标签指定的版本为基础版本,新建一个分支,继续其他的操作。

因此 ,就是新建分支的操作了。

$ git checkout -b [分支名称] [标签名称]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++primer 第 5 章语句 5.2语句作用域 5.3条件语句 5 . 4 迭代语句 5.5跳转语句 5.6 try语句块和异常处理

5 . 1 简单语句 C语言中的大多数语句都以分号结束,一个表达式,比如ival 5 , 末尾加上分号就变成了表达式语句(expression statement)。表达式语句的作用是执行表达式并丢弃掉求值结果:ival 5; // 一条没什么实际用处的表达式语…

英语口语-文章朗读Week9Thursday

英语文章 Everyone has his or her own dreams. Some people wants to be millionaires so they can give many generous donations later; some people want to be scientists so they can bring many conveniences to the world; some people only want to be bus-drivers s…

操作系统 内存管理相关知识

cpu执行程序的基本过程 译码器 输入为n管脚,输出为2^n根管脚,编号为从0到2^(n-1),用少的输入端控制更多的输出端最常用的是三八译码器AD(Address bus)地址总线: 选中一行数据每一行 8bit 组成8吧B cpu输入端32根线,输出端就可以控…

Chrome浏览器必装插件!尤其程序猿!

Chrome 浏览器有一个好处,就是插件极其丰富,只有你想不到的,没有你找不到的,这恐怕是 Chrome 浏览器被众多爱好者钟爱的原因吧。 言归正传,今天来给大家推荐 10 款我自己珍藏的 Chrome 浏览器插件。 1、crxMouse Ch…

英语口语-文章朗读Week10 Monday

英语文章 Here are some valuable suggestions which may assist you in landing good job First, make your resume clear and associate it with the position you are applying for. Try to add details like your temporary jobs at college or your former jobs Second, …

英语口语-文章朗读Week10 Wednesday

英语文章 Everyone needs sleep for survival, but how much? It is said that eight hours of sleep is fundamental to a healthy person. But today, many people are sacrificing their sleep time。 Modern people have so many alternatives: cell phones, PCs, TVs, g…

嵌入式Linux多任务编程 进程 管道 命名管道

进程 进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统执行资源分配和保护的基本单位。程序的一次执行就是一个进程一个程序可以派生多个进程多个不同程序运行的时候,也会有多个相对应的进程与其相互对应进程是动…

英语口语-文章朗读Week10 Thursday

英语文章 There are many customs and traditions in Chinese civilization. Here, we will talk about the development of the way people greet each other: In ancient times, people had to kneel to those who were superior to them. This custom remained until the …

Linux进程之间通信 信号

2) SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。 3) SIGQUIT 和SIGINT类似, 但由QUIT字符(通常是Ctrl-\)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。 15)…

Linux进程之间通信 消息队列

使用命令 ipcs -q 查看对应的消息队列代码 文件接收者 #include <sys/types.h> #include <stdio.h> #include <unistd.h> #include <string> #include <signal.h> #include <wait.h> #include <sys/msg.h> #include <cstring&g…

c++面向对象高级编程 学习二 带指针的类

带指针的类&#xff0c;必须要自己写拷贝构造和赋值构造 拷贝构造&#xff1a;参数和类的类型一样的构造函数 赋值构造&#xff1a;重写操作符&#xff0c;且其参数和类的类型一样 class String { public: String(const char* cstr 0); String(const String& str); Strin…

英语口语 week11 Tuesday

英语文章 It was a cold and gloomy winter afternoon, people with their chilled hands tucked into their pockets or hidden in their sleeves. Fred was in a depressed mood, just like the weather,for he failed to get any award in the debate competition When he …

进程之间通信 共享内存

命令 ipcs 命令查看共享内存、消息队列、管道等相关信息ipcs -m 查看共享内存的信息代码 创建共享内存共享内存 关联 进程分离共享内存删除共享内存 #include <sys/shm.h> #include <iostream>#define BUF_SIZE 1024int main() {int share_id 0;//创建共享内存i…

c++面向对象高级编程 学习三 堆、栈和内存泄漏

栈&#xff0c;是存在于某作用域的一块内存空间。在函数体内声明的任何变量&#xff0c;其所使用的内存空间均来自于栈。 堆&#xff0c;是指由操作系统提供的一块global内存空间&#xff0c;程序可动态分配获得若干内存空间块。 new操作符生成的对象所占用的内存空间即是从堆中…

clion编写C++ 使用多线程时候,CMakeLists.txt书写,引用-pthread

添加如下一行 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") 具体的例子 cmake_minimum_required(VERSION 3.17) project(mutex_learn)set(CMAKE_CXX_STANDARD 14)set(BOOST_ROOT "/usr/local/include/boost") #添加头文件搜索路径 include_direc…

c++面向对象高级编程 学习四 静态、类模板、函数模板

静态static&#xff1a;静态数据和静态函数&#xff0c;在内存中只有一份&#xff0c;不会随着创建对象的数目的增加而增加 static数据&#xff1a;比如银行的account类中&#xff0c;账户名是普通数据&#xff0c;100个对象会有100个账户名&#xff0c;但利率都是相同的&#…

线程的编程

完整代码 #include <sys/shm.h> #include <iostream> #include <unistd.h> #include <pthread.h>void * child1(void *arg){pthread_t tid pthread_self();printf("1 thread %lu \n",tid);}int main(int argc,char* argv[]) {int result{…

英语口语 week11 Friday

英语文章 I very much like simplicity in life. For me, college is far more than a place to improve my intellectual abilities Every weekend, I usually have a walk along the way to the front gate of Mount Qingcheng, enjoying the intense aromas of flowers on …

c++面向对象高级编程 学习五 组合、委托与继承

组合 composition 表示has a queue类中有一个deque容器&#xff0c;这种关系叫做 组合 queue中的六个函数都是调用c的函数完成的 template <class T> class queue { ... protected: deque<T> c; // 底層容器 public: // 以下完全利用 c 的操作函數完成 bool empt…