里程碑即Tag,是人为对提交进行的命名。
1、首先从Github上克隆镜像hello-world.git版本库:
2、用户user1和user2分别在各自的工作区hello-world克隆这个裸版本库:
用户user1克隆:
用户user2克隆:
3、在工作区hello-world中分别设置版本库的用户名和邮箱
user1设置:
user2设置:
4、显示当前里程碑列表(hello-world.git版本库中):
使用-n<\num>参数,显示最多<\num>行里程碑的说明:
创建里程碑
a、创建轻量级里程碑,命令:git tag <\tagname> [<\commit>]
1、先创建一个空提交,然后在空提交上创建一个轻量级里程碑名为mytag,省略了commit参数,相当于在HEAD上即最新的空提交上创建里程碑:
2、查看里程碑:
3、当创建一个里程碑mytag后,会在版本库目录下创建一个新文件。轻量级里程碑实际指向的是一个提交,并且提交的内容就是刚进行的空提交:
缺点是:轻量级里程碑的创建过程没有记录,无法知道是谁创建的里程碑。并且使用git describe命令默认不使用轻量级里程碑生成版本描述字符串,显示的是前一个版本的里程碑名称:
使用–tags参数,也可以将轻量级里程碑用作版本描述符:
b、带说明的里程碑
创建里程碑时提供一个关于该里程碑的说明,
命令:(1)git tag -a <\tagname> [<\commit>]
(2)git tag -m <\msg> <\tagname> [<\commit>]
1、创建一个空提交:
2、命令使用-m <\msg>参数,在刚创建的空提交上创建一个带说明的里程碑:
3、查看里程碑
4、创建一个带说明的里程碑后,会在版本库目录下创建一个新的文件,该里程碑不再指向一个提交,而是一个tag对象:
这个对象tag会记录创建里程碑的用户,创建里程碑的时间。
5、虽然本身是一个tag对象,但是可以直接将其视为一个提交。
6、获取里程碑指向的提交对象tag的哈希值
7、获取提交对象的ID(多种方法):
删除里程碑
如果里程碑建立在错误的提交上,或者对里程碑的命名不满意,可以删除里程碑。一旦删除,不可恢复。
上图的删除中显示了里程碑所对应的提交ID,对里程碑进行重建(也就是不满意命名,先删除再重新用新的命名):