Tag使一个点成为Git历史上的一个特定点。标签被用来标记一个相关的提交阶段。我们可以标记一个提交以备将来参考。主要是用来标记一个项目的初始点,如v1.1。
标签很像分支,一旦启动,它们就不会改变。我们可以在一个分支或不同的分支上拥有任意数量的标签。下图展示了不同分支上的标签。
在上图中,一个分支有很多版本。所有这些版本在版本库中都有标签。
有两种类型的标签。
- 附加说明的标签
- 轻量级的标签
这两个标签都是类似的,但它们在元数据存储量的情况下是不同的。
何时需要创建Tag:
- 当你想为你的代码的稳定版本创建一个发布点时。
- 当你想创建一个历史点,可以在未来参考重用。
Git 创建 tag
要创建一个标签,首先要签出到你想创建标签的分支。要签出该分支,请运行下面的命令。
$ git checkout <Branch name>
现在,你已经在你想要的分支上了,比如,master。请看下面的输出。
你可以通过使用git tag命令来创建一个标签。创建一个名称为v1.0、v1.1的标签,或者其他任何你想要的名称。要创建一个标签,运行命令如下。
语法:
$ git tag <tag name>
上述命令将标记项目的当前状态。请看下面的例子。
$ git tag projectv1.0
上述命令将在主分支上创建一个标记点,作为projectv1.0。
Git List Tag
我们可以在我们的资源库中列出可用的标签。有三个选项可以用来列出版本库中的标签。它们如下。
- git tag
- git show
git tag -l ".*"
git tag
这是最常用的选项,用来列出版本库中所有可用的标签。它被用作。
$ git tag
输出:
从上面的输出中我们可以看到,git tag 命令正在列出版本库中的可用标签。
git tag show <tagname>
这是一个特定的命令,用于显示一个特定标签的细节。它被用作。
语法:
$ git tag show <tagname>
上面的命令将显示标签描述,考虑下面的命令。
$ git tag show projectv1.0
输出:
在上面的输出中,git show标签显示的是标签projectv1.0的描述,如作者姓名和日期。
git tag -l " .*"
它也是一个特定的命令行工具。它使用通配符模式显示可用的标签。假设我们有十个标签,分别是v1.0、v1.1、v1.2直至v1.10。那么,我们可以使用标签模式v来列出所有的v模式,它的用法是。
语法:
$ git tag -l ".*"
上述命令将显示所有包含通配符的标签。考虑一下下面的命令。
$ git tag -l "pro*"
输出:
上述命令显示的是以pro字开头的标签列表。
Git tags 类型
在git中,有两种类型的标签。它们是:。
- 附加说明的标签
- 轻量级的标签
让我们详细了解一下这两个标签。
附加说明的标签
注释标签是存储额外元数据的标签,如开发者姓名、电子邮件、日期等。它们被作为一个对象束存储在Git数据库中。
如果你要对任何项目的最终版本进行标记和保存,那么建议创建一个带注释的标签。但如果你想做一个临时的标记点或不想分享信息,那么你可以创建一个轻量级的标签。在注释标签中提供的数据对于项目的公开发布至关重要。有更多的选项可以用来注释,比如你可以为项目的注释添加一个信息。
要创建一个带注释的标签,请运行以下命令。
语法:
$ git tag -m "< Tag message>
上述命令将创建一个带有信息的标签。注释的标签包含一些额外的信息,如作者姓名和其他项目相关的信息。请看下面的图片。
上述命令将在我的项目仓库的主分支中创建一个带注释的标签projectv1.1。
当我们显示一个被注解的标签时,它将显示更多关于标签的信息。请看下面的输出。
轻量级的标签
Git 还支持另一种类型的标签;它被称为轻量级标签。这两种标签的动机都是在仓库中标记一个点。通常情况下,它是一个存储在文件中的提交。它不存储不必要的信息,以保持其轻量级。轻量级标签没有提供命令行选项,如 -a,-s 或 -m,只传递一个标签名称。
语法:
$ git tag <tag name>
上述命令将创建一个轻量级的标签。请看下面的例子。
$ git tag projectv1.0
给出的输出将创建一个名为projectv1.0的轻量级标签。
它将显示一个比注解标签更小的输出。考虑一下下面的输出。
Git Push Tag
我们可以把标签推送到一个远程服务器项目。这将有助于其他团队成员知道在哪里挑选更新。它将显示为远程服务器账户上的发布点。git推送命令为推送标签提供了一些特定的选项。它们如下。
Git push origin <tagname>
Git push origin -tags/ Git push -tags
The git push origin
我们可以通过使用git push命令推送任何特定标签。它的使用方法如下。
语法:
$ git push origin <tagname>
上述命令将推送指定的标签名称作为释放点。请看下面的例子。
我在本地仓库中创建了一些标签,我想把它推送到我的GitHub账户。那么,我就必须操作上述命令。请看下面的图片;它是我的远程仓库的当前状态。
上面的图片显示释放点为0个释放点。现在,执行上述命令。考虑一下下面的输出。
我已经把我的projectv1.0标签推送到远程版本库。它将改变版本库的当前状态。请看下面的图片。
通过刷新版本库,它显示的发布点是1个版本。我们可以通过点击它来查看这个版本。它将显示为。
我们可以把它下载成zip和tar文件。
The git push origin –tag/ git push –tags:
给定的命令将一次性推送所有可用的标签。它将创建与版本库中可用标签数量一样多的发布点。它的使用方法如下。
语法:
$ git push origin --tags
或
$ git push --tags
上述命令将从本地仓库推送所有可用的标签到远程仓库。请看下面的输出。
输出:
标签已被推送到远程服务器源;因此,发布点也被更新。请看下面这个版本库的快照。
在上面的输出中,发布点根据标签被更新。你可以看到发布点更新为2个版本。
Git 删除Tag
Git 允许在任何时候从仓库中删除一个标签。要删除一个标签,运行下面的命令。
语法:
$git tag --d <tagname>
或
$ git tag --delete <tagname>
上述命令将从本地版本库中删除一个特定的标签。假设我想删除我的标签projectv1.0,那么过程将是这样的。
$ git tag --d projectv1.0
请考虑以下输出。
标签projectv1.0已经从版本库中删除。
删除远程Tag
我们也可以从远程服务器上删除一个标签。要从远程服务器上删除一个标签,请运行以下命令。
语法:
$ git push origin -d <tagname>
或
$ git push origin --delete<tag name>
上述命令将从远程服务器上删除指定的标签。请看下面的输出。
projectv1.0标签已从远程服务器原点删除。
删除多个Tags
我们可以通过一条命令删除一个以上的标签。要同时删除一个以上的标签,请运行以下命令。
语法:
$ git tag -d <tag1> <tag2>
输出:
上述命令将从本地仓库中删除两个标签。
我们还可以从远程服务器上删除多个标签。要从服务器原点删除标签,请运行以下命令。
$ git push origin -d <tag1> <tag2>
上述命令将从服务器上删除两个标签。
Git Checkout Tags
在git中并没有签出标签的实际概念。不过,我们可以通过从一个标签创建一个新的分支来实现。要检出一个标签,运行下面的命令。
语法:
$ git checkout -b < new branch name> <tag name>
上述命令将创建一个新的分支,其状态与标签中的版本库相同。考虑一下下面的输出。
上述命令将创建一个新的分支,并将版本库的状态转移到 new_branchv1.1,因为它在 tag projectv1.1 上。
从一个较早的提交创建一个标签。
如果你想回到你的历史,想在那个点上创建一个标签。Git允许你这样做。要从一个较早的提交创建一个标签,运行下面的命令。
< git tag <tagname> < reference of commit>
在上述命令中,不需要给出全部的40位数字,你可以给出其中的一部分。
假设我想为我的老提交创建一个标签,那么过程将如下。
检查较早的提交。
要检查较早的提交,运行git status命令。它的操作方式如下。
$ git status
考虑下面的输出。
上面的输出显示的是较早的提交。假设我想为我的提交创建一个标签,以828b9628开始。复制该提交的特定引用。并将其作为参数传入上述命令。考虑一下下面的输出。
在上面的输出中,版本库的早期版本被标记为olderversion。