经常可以看到一些软件的版本是V1.0
,V2.0
这样的,Git也支持给历史的某个提交打上这样一个东西,也就是标签。
标签可以分为两种:
它是一个点,指向了某一次的提交。我们可以通过这个标签,获取到那一次提交时候的状态。
我们来创建一个轻量标签:
只需要使用git tag <name>
就可以创建一个标签了
创建轻量标签
包含了打标签者的姓名,邮件,日期,标签信息。
建议使用附注标签
创建附注标签的方式:
git tag -a <name> -m '<tag info>'
创建附注标签
我们可以通过git show <name>
来看到标签的具体信息,也就是刚才写在-m
后面部分的内容
展示标签的具体信息
过去的很多提交中,可能其中某次提交发生了重大的变更,需要记录一下。我们来为他创建一个标签。
首先查看一下过去的提交历史
git log --pretty=oneline
查看历史
比如要对9acd7c5f1267c8003d550b49483282168a0ce1a7
这个提交创建一个标签:
git tag -a v1.2 9acd7c5f1267c8003d550b49483282168a0ce1a7
image-20190402225027079
我们在本地仓库的全部操作,不进行推送的话,远端都无法接受的变更。
所以我们如果要让其他人也能看到这个标签信息的话,就需要进行推送
git push origin <tagname>
git push origin v1.0
推送
origin
对应的远端分支是github,所以去github上看一下
github端
Tags信息
提交上去了,不过时间看上去有点怪怪的。
通过git log
看一下V1.0提交的信息,可以发现确实是2天前,所以远端的时间取得是本地提交的时间,而不是推送的时间。
V1.0信息
当然也可以把全部的标签一次性都推送上去
git push origin --tags
全部推送
推送结果
这样就完成了标签的推送了
有新增就有删除,所以当我们不要这个标签的时候,我们就可以把它删了
git tag -d <tagname>
删除标签
同理,它也只是本地的操作,要把这个变更同步到远端,还是需要进行push操作
git push <remote> :refs/tags/<tagname>
删除远端分支
删除结果
创建标签的意义,很大程度就是这个标签所在的内容会被用到。既然要被使用,就需要进行检出.
git checkout <tagname>
虽然我们如愿的检出了标签的内容,但是这个时候是处于一个游离的状态,我们当前的修改提交都会丢失掉。如果需要保留,请注意创建一个分支后提交保留。
检出
和Linux操作中类似,Git也支持将命令定义为一个别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
以commit
为例,现在把它重命名为ci
那一次提交请求为
git ci -m 'add 2.py
别名提交
当然一整条语句也可以进行别名的替换,如果使用频率非常高的话,可以考虑创建一个别名
例如我们想要查看最后一条提交信息
git log -1 HEAD
git config --global alias.last 'log -1 HEAD'
git last