一、创建标签
任务描述
现在你已经成了项目负责人,由你负责发布版本,你需要在发布一个版本之前,给该版本对应的代码打上标签,以便于管理和标识。
本关任务:为最近一次提交打上标签。
相关知识
在开发过程中,
commit ID
是一串无序的字符,它虽然能唯一标记一次代码提交,即一个版本。但是,它很难记忆和辨识。所以,为了给不同的版本起一个容易辨识的名字,我们可以给这次提交打上一个标签,用不同的标签来对应不同的版本。这样,就相当于给这次提交生成了一个快照。实际上,在为某次提交创建标签的时候,Git
会为标签生成一个指针,以指向其对应的提交。然后,我们就可以通过标签找到对应的提交,这样对我们版本发布和代码审查都很有帮助。如上图所示,我们为
master
分支上的三次提交,分别打上0.1
、0.2
、0.3
三个标签。这样,当我们说0.1
版本的时候,就对应了第一次提交的代码。这种方式大大降低了代码审查、团队交流及版本发布的复杂性。查看标签
查看标签需要用到
git tag
命令,其具体使用示例如下:git tag
这样就能列出所有的标签,显示的标签按字母顺序排列,所以标签的先后并不表示重要程度的轻重。
如果标签过多,而你指向显示指定的某些标签,则可以使用正则表达式:
git tag -l 'v5.1.2.*'
如上,使用
-l
参数,并使用v5.1.2.*
这一正则表达式,就过滤除了符合要求的标签,其中v5.1.2.*
为正则表达式,它能够匹配所有前缀为v5.1.2
的标签。实际执行过程中会得到类似于下方的输出:上方输出信息,为我们列出了目前版本库中已有的四个标签。
创建标签
不含附注的标签
创建标签的命令格式为:
git tag 标签名 commitID
参数
commitID
标识了该标签对应的代码版本,如果不提供commitID
,就默认为最近一次提交后的代码打标签。例如:git tag v1.0 git tag v1.0 7f8buir2
语句
1
表示,为最新一次提交后的代码打上v1.0
的标签;语句2
则表示,为指定的版本7f8buir2
打上标签v1.0
。包含附注的标签
如果需要像提交代码时增加提交日志那样,为每个标签添加说明信息,则需要使用:
git tag -a 标签名 -m "说明信息"
如:
git tag -a v1.0 -m 'version 1.0'
表示为此次打的标签,增加一个
version 1.0
的说明信息。在查看标签时,可以使用
git show
命令,查看某个标签的附注信息。例如:git show v1.0
表示要查看标签
v1.0
对应的附注信息。编程要求
本关的编程任务是,补全右侧代码片段中
Begin
至End
中间的脚本,为最近一次提交打上标签v1.0
。
#创建gitTraining文件夹
mkdir gitTraining
#进入gitTraining文件夹
cd gitTraining
#将gitTraining初始化为一个本地仓库
git init
#创建helloGit.txt文件
touch helloGit.txt
#将helloGit.txt添加到暂存区
git add helloGit.txt
#将helloGit.txt提价到本地仓库
git commit -m "Git入门之标签实训第一关"
#请在下面的Bein/End星号线内填写Git命令为最近一次提交打上标签v1.0
#********** Begin **********#
git tag v1.0
#********** End **********#
二、推送指定标签
任务描述
当你为某个版本打上标签后,就需要将其分享给团队中其他成员,即要将其推送至远程版本库。
本关任务:将指定标签推送至远程仓库。
相关知识
推送指定标签
推送指定标签到远程仓库的
Git
命令如下:git push 远程主机名 tag名
其中,
远程主机名
为远程Git
版本库对应的主机名,tag名
为准备推送的标签名。该命令使用示例如下:
git push origin v1.0
该语句表示将
v1.0
标签,推送到主机名为origin
对应的远程仓库。推送全部标签
推送指定标签需要用到:
git push 远程主机名 --tags
其使用方法如下:
git push origin --tags
其中
origin
为远程主机名,这样就能将全部标签推送至远程仓库。编程要求
平台已经为你准备了本地仓库,进行了两次提交,并为这两次提交依次打上了
v1.0
、v2.0
标签,本地仓库的远程仓库地址为/tmp/educoder.git
,主机名为origin
。本关的编程任务是,补全右侧代码片段中
Begin
至End
中间的脚本,将本地仓库的v1.0
标签推送至远程仓库origin
。
#进入gitTraining文件夹
cd gitTraining
#请在下面的Bein/End星号线内填写Git命令以将标签v1.0推送至远程仓库origin
#********** Begin **********#
git push origin v1.0
#********** End **********#
三、推送全部标签
任务描述
当你为版本打上标签后,就需要将其分享给团队中其他成员,即要将其推送至远程版本库。在前面的关卡中,我们已经学习了如何推送指定标签,但是在有些情况下,比如需要记录产品的各个版本的演变过程,或者和团队其他成员交流不同版本的代码,那么就需要将所有的标签全部推送。
本关任务:将全部标签推送至远程仓库。
编程要求
平台已经为你准备了本地仓库
gitTraining
,然后进行了两次提交,并为这两次提交依次打上了v1.0
、v2.0
标签,本地仓库的远程仓库地址为/tmp/educoder.git
,主机名为origin
。本关的编程任务是,补全右侧代码片段中
Begin
至End
中间的脚本,将本地仓库的所有标签均推送至远程仓库origin
。
#进入gitTraining文件夹
cd gitTraining
#请在下面的Bein/End星号线内填写Git命令为将所有标签推送至远程仓库
#********** Begin **********#
git push origin --tags
#********** End **********#
四、删除标签
任务描述
当你为需要发布的版本打上了标签之后,你发现标签打错了,这个时候就需要将该标签删除。
本关任务:删除指定标签。
相关知识
删除本地标签
删除本地标签,需要用到的命令格式为:
git tag -d 标签名
具体使用方法示例如下:
git tag -d v1.0
这样就能实现删除
v1.0
标签。删除远程标签
删除远程
tag
,可以使用如下命令:git push origin --delete tag 标签名
或者如下所示的命令:
git push origin :refs/tags/<tagname>
即推送一个空的
tag
名到远程仓库,其中<tagname>
指某个标签的名字。这两种方式都能实现删除远程的指定标签。
编程要求
平台已经为你准备了本地仓库
gitTraining
,远程主机名为origin
,并进行了一次提交,且为这次提交打上了v1.0
的标签。本关的编程任务是,补全右侧代码片段中
Begin
至End
中间的脚本,删除本地标签v1.0
。
#进入gitTraining文件夹
cd gitTraining
#请在下面的Bein/End星号线内填写Git命令以删除标签v1.0
#********** Begin **********#
git tag -d v1.0
#********** End **********#