git 使用详解-- tag打标签

Git 的标签管理。跟大多数的 VCS 工具一样,git 也有在历史状态的关键点“贴标签”的功能,一般人们用这个功能来标记发布点(例如’v1.0′)。

列出git中现有标签
要想列出git中现有的所有标签,输入’git tag’命令运行即可:

$ git tag
v0.1
v1.3

这个列表是按照字母表顺序给出的,其实排名先后跟重要程度没有直接联系。
当然,你也可以按照特定表达式搜索某些标签。假如在一个 git 仓库中有超过 240 个标签,而你只想得到 1.4.2 序列的标签,那么你可以:

$ git tag -l v1.4.2.*
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4

创建标签
在 git 中有两种最主要的标签–轻量级标签(lightweight)和带注释的标签(annotated)。轻量级标签跟分枝一样,不会改变。它就是针对某个特定提交的指针。然而,带注释的标签是git仓库中的对象。它是一组校验和,包含标签名、email、日期,标签信息,GPG签名和验证。一般情况下,建议创建带注释的标签,这样就会保留这些信息,但是如果你只是需要临时性标签或者某些原因你不想在标签中附带上面说的这些信息,lightweight标签更合适些。
带注释的标签

在git中创建带注释的标签非常简单,在运行’tag’命令时加上-a就可以了。

$ git tag -a v1.4 -m ‘version 1.4′
$ git tag
v0.1
v1.3
v1.4

‘-m’指明标签信息,跟标签一起存储。如果你不使用-m指明标签信息,git会自动启动文本编辑器让你输入。
可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。

$ git show v1.4
tag v1.4
Tagger: Scott Chacon 
Date: Mon Feb 9 14:45:11 2009 -0800
my version 1.4
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7… a6b4c97…
Author: Scott Chacon 
Date: Sun Feb 8 19:02:46 2009 -0800
Merge branch ‘experiment’

我们可以看到,在提交对象信息上面,列出了此标签的提交者和提交时间,以及相应的标签信息。
有签名的标签。

如果你有GPG私钥的话,你也可以用GPG来给你的标签签名,把-a换成-s就可以了:

[master]$ git tag -s v1.5 -m ‘my signed 1.5 tag’
You need a passphrase to unlock the secret key for
user: “Scott Chacon ”
1024-bit DSA key, ID F721C45A, created 2009-02-09

然后,如果你对某个标签运行’git show’的话,你就会看到你的GPG前面附加上去了。

[master]$ git show v1.5
tag v1.5
Tagger: Scott Chacon 
Date: Mon Feb 9 15:22:20 2009 -0800
my signed 1.5 tag
—–BEGIN PGP SIGNATURE—–
Version: GnuPG v1.4.8 (Darwin)
iEYEABECAAYFAkmQurIACgkQON3DxfchxFr5cACeIMN+ZxLKggJQf0QYiQBwgySN
Ki0An2JeAVUCAiJ7Ox6ZEtK+NvZAj82/
=WryJ
—–END PGP SIGNATURE—–
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7… a6b4c97…
Author: Scott Chacon 
Date: Sun Feb 8 19:02:46 2009 -0800
Merge branch ‘experiment’

稍后,我们会介绍如何验证签名标签。

轻量级标签
轻量级标签实际上就是存在一个文件中的提交校验和–没有附加任何其他信息。创建轻量级标签的方法就是把上面’-a’,'-s’,'-m’这些选项都去掉。

$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5

如果现在对这个标签使用’git show’命令,不会看到像上面那种标签显示的那么多内容,仅仅显示这次提交的有关信息。

$ git show v1.4-lw
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7… a6b4c97…
Author: Scott Chacon 
Date: Sun Feb 8 19:02:46 2009 -0800
Merge branch ‘experiment’

验证标签
使用’git tag -v (tag)’就可以验证一个签名标签了。这个命令会用到GPG来验证签名。前提是:你必须在密钥环中存放着签名者的公钥。

$ git tag -v v1.4.2.1
object 883653babd8ee7ea23e6a5c392bb739348b1eb61
type commit
tag v1.4.2.1
tagger Junio C Hamano 1158138501 -0700
GIT 1.4.2.1
Minor fixes since 1.4.2, including git-mv and git-http with alternates.
gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
gpg: Good signature from “Junio C Hamano ”
gpg: aka “[jpeg image of size 1513]”
Primary key fingerprint: 3565 2A26 2040 E066 C9A7 4A7D C0C6 D9A4 F311 9B9A

如果你没有这个公钥的话,你会看到这样的信息:

gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
gpg: Can’t check signature: public key not found
error: could not verify the tag ‘v1.4.2.1′

后期贴标签
这种情况是说你想对以前的某次提交贴个标签,如果整个提交历史是这样的:

$ git log –pretty=oneline
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

忘记在那个提交信息为’updated rakefile’的点上贴一个’v1.2′的标签了,我可以现在贴一个上去。你可以在执行创建标签的语句后面跟上那次提交的校验和(或者部分校验和)。

$ git tag -a v1.2 9fceb02

现在我们可以列出所有的标签:

$ git tag
v0.1
v1.2
v1.3
v1.4
v1.4-lw
v1.5
$ git show v1.2
tag v1.2
Tagger: Scott Chacon 
Date: Mon Feb 9 15:32:16 2009 -0800
version 1.2
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: Magnus Chacon 
Date: Sun Apr 27 20:43:35 2008 -0700
updated rakefile

共享标签


默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行git push origin [tagname] 即可:

默认情况下,’git push’命令不会将标签上传到远程服务器上。为了共享这些标签,你必须在’git push’命令后明确添加-tags选项

 

[master]$ git push –tags
Counting objects: 50, done.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (44/44), 4.56 KiB, done.
Total 44 (delta 18), reused 8 (delta 1)
To git@github.com:schacon/simplegit.git
* [new tag] v0.1 -> v0.1
* [new tag] v1.2 -> v1.2
* [new tag] v1.4 -> v1.4
* [new tag] v1.4-lw -> v1.4-lw
* [new tag] v1.5 -> v1.5

现在,如果有人克隆或者在线同步你的git仓库的话,标签也会一并同步了。


删除tag这么用:

git push origin --delete tag 
tag是对历史一个提交id的引用,如果理解这句话就明白了
使用git checkout tag即可切换到指定tag,例如:git checkout v0.1.0切换到tag历史记录会处在分离头指针状态,这个是的修改是很危险的,在切换回主线时如果没有合并,之前的修改提交基本都会丢失,如果需要修改可以尝试git checkout -b branch tag创建一个基于指定tag的分支,例如:git checkout -b tset v0.1.0  这个时候就会在分支上进行开发,之后可以切换到主线合并

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

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

相关文章

Nova虚拟机启动提示libvirtError

OpenStack自动化安装基本折腾完毕,装一次大概也就10分钟,但是装完后今天我的虚拟机起不来,经过查找log发 现如下图提示: 已经到这里,说明已经过了nova-sheduler那一关,跟踪一下代码,也正是在调用…

ASP.NET Core使用功能开关控制路由访问

前言在前面的文章,我们介绍了使用Middleware有条件地允许访问路由(《ASP.NET Core使用Middleware有条件地允许访问路由》)。而对于一些试验性的功能,我们并不希望用密码去控制是否允许访问,而是想用一种开关的方式开放…

LeetCode之Single Number

1、题目 Given an array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory? Subscribe to see which companies asked…

C#中的数组

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言前面的文章和大家一起看了C#中的异常,今天一起学习下C#中最基本的数据结构,数组的用法。数组实际上是由一个变量名称表示的一组同类型的数据元素。每个元素通过变量名称和一个或多个方括…

java怎么实现同步到微博功能_新浪微博信息站外同步的完整实现

最近遇到一个项目,其中需要将用户的微博信息与自己的网站项目上同步,好在新浪微博是提供了API的,大概查阅了一下,信息同步需要调用的是在关于授权机制说明中,新浪微博的API一共有两种验证机制,分别是&#…

33:计算分数加减表达式的值

33:计算分数加减表达式的值 查看提交统计提问总时间限制: 1000ms内存限制: 65536kB描述编写程序&#xff0c;输入n的值&#xff0c;求 1/1 - 1/2 1/3 - 1/4 1/5 - 1/6 1/7 - 1/8 ... (-1)n-11/n 的值。 输入输入一个正整数n。1 < n < 1000。输出输出一个实数&#x…

如何打卡后缀为3ds的文件

打开.3DS文件 3DS文件怎么打开&#xff1f; 用它吧&#xff1a;a3dsviewer&#xff0c;顾名思义&#xff0c;一个3D文件浏览工具&#xff0c;为用户提供一个快速和简单的3DS文件浏览器很容易。 这里是一些主要特点的“a3dsviewer”&#xff1a; 将3DS文件的POVRay格式。 输出的…

C/C++基本数据类型所占字节数

关于这个主要的问题&#xff0c;非常早曾经就非常清楚了&#xff0c;C标准中并没有详细给出规定那个基本类型应该是多少字节数&#xff0c;并且这个也与机器、OS、编译器有关&#xff0c;比方相同是在32bits的操作系统系&#xff0c;VC的编译器下int类型为占4个字节&#xff1b…

LeetCode之Find the Difference

1、题目 Given two strings s and t which consist of only lowercase letters. String t is generated by random shuffling string s and then add one more letter at a random position. Find the letter that was added in t. Example: Input: s "abcd" t &qu…

ASP.NET Core使用功能开关控制路由访问(续)

前言在前面的文章&#xff0c;我们介绍了使用功能开关控制路由访问。但其实我们使用了2个条件做的判断&#xff1a;var isDebugEndpoint context.Request.Path.Value.Contains("/test"); var debugEndpoint await _featureManager.IsEnabledAsync("ForbiddenD…

如何使用CDR智能填充工具

使用智能填充工具可以为任意的闭合区域填充颜色并设置轮廓。与其他填充工具不同&#xff0c;智能填充工具仅填充对象&#xff0c;它检测到区域的边缘并创建一个闭合路径&#xff0c;因此可以填充区域。例如&#xff0c;智能填充工具可以检测多个对象相交产生的闭合区域&#xf…

java对象引用出错_“Java有值传递和引用传递”为什么错了?

前言初学Java的时候&#xff0c;老师在课堂上说“Java有值传递和引用传递”&#xff0c;但网上“Java只有值传递”的呼声很高。本人在查找资料的过程中&#xff0c;在这两个说法之间反复横跳。经过本人的整理后&#xff0c;其实还真的是Java只有值传递。什么是值传递&#xff1…

试图加载格式不正确的程序

部署IIS的时候&#xff0c;会出现 System.BadImageFormatException: Could not load file or assembly xxx or one of its dependencies. 试图加载格式不正确的程序。 问题分析&#xff1a; 由于编译中有的是32位有的是64位 不一致 解决办法&#xff1a; 1.找到IIS该站点对应的…

LeetCode之Missing Number

1、题目 Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array. For example, Given nums [0, 1, 3] return 2. Given nums [0]return 12、代码实现 public class Solution {public int missingNumber(in…

Windows下卸载软件时提示 等待先前的卸载完成? 终止 dllhost.exe 进程

只要结束进程中的 “dllhost" 进程就好了。 估计原因是&#xff0c; 当卸载某些 "所谓的"较大型的软件的时候&#xff0c; 要去更新&#xff0c; 更改系统对dll链接库的注册&#xff0c; 更新。 通常这个过程等待的时间较长&#xff0c; 或者需要重新启动电脑才…

程序员生存之道-教你如何在丛林中捕获食物

文章目录 &#x1f4a5; 序言&#x1f423; 躺&#x1f95d; 从零到一还是从零到100&#xff1f;&#x1f344; 螺丝钉文化&#x1f354; 价值分析&#x1f353; 长期主义者&#xff1f;&#x1f96c; 何为顺其自然&#xff1f;&#x1f308; 总结 &#x1f4a5; 序言 嗨&#…

微软发文庆祝 .NET 诞生 20 周年纪念日!

技术编辑&#xff1a;MissD丨发自 思否编辑部公众号&#xff1a;SegmentFault刚刚过去的“情人节”里&#xff0c;.NET 团队为庆祝 .NET 社区诞生 20 周年而举办了一场盛大的活动。没错&#xff01;.NET 于 2002 年 2 月 13 日与 Visual-Studio 一起推出&#xff0c;本月终于迎…

java代码实现四舍五入_Java中四舍五入实现方法

Java中四舍五入实现方法Java有四舍五入函数–Math.round&#xff0c;通过一个例子看看他的用法&#xff1a;[java] view plaincopypackage math;public class MathRoundTest {/*** Math类中提供了三个与取整有关的方法&#xff1a;ceil,floor,round,* 这些方法的作用于它们的英…

【动态规划】[Uva11270]Tiling Dominoes

这道题就是连通性状态压缩DP&#xff0c;复习了一下。 #include <cstdio> #include <iostream> #include <cstring> #include <map> using namespace std; long long dp[11][11][(1<<11)1][2], n, m; long long dfs(int x, int y, int md, int r…

LeetCode之Find All Numbers Disappeared in an Array

1、题目 Given an array of integers where 1 ≤ a[i] ≤ n (n size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this array. Could you do it without extra space and in O(n) runti…