git tag
git tag v1.01 打上v1.01这个标签
git show v1.01 显示这个标签的详情
git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象。建议使用附注标签。
# 创建轻量标签
$ git tag v0.1.2-light
# 创建附注标签
$ git tag -a v0.1.2 -m “0.1.2版本”
创建轻量标签不需要传递参数,直接指定标签名称即可。
创建附注标签时,参数a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
git tag -n -l 显示所有的标签
git push <remote> <tag_name>:推送某个标签到远程仓库
git push <remote> --tags:推送所有标签到远程仓库。
git push <remote> --delete <tag_name>:删除远程仓库中的某个标签
git push <remote> :refs/tags/<tagname>:删除远程仓库某个标签的等价方式,相当于将冒号前面的空值推送到远程标签名,从而高效地删除它
和go mod的关系
在实际使用中,一个git仓库中往往会有多个子的go.mod目录,比如,实际生产中,常常将proto的api和项目的逻辑代码隔开,项目互相引用的时候,只用引api即可。或者,将公共模块的常量定义和工具库在一个git仓库中存放,但是,二者的版本管理是要分开的
使用细节:
目录如下:api/proto目录下存在对外暴露的pb,其他的业务逻辑从根目录开始
/api/proto/go.mod【github.com/xxxx/xxx/api/proto】
/api/proto/req.proto
go.mod【xxxx/xxx】//故意修改go module的名字,让外面拉不到,只能拉到api
handlers/xxx.go
打tag的细节
直接,git tag -a v0.1.2 -m “0.1.2版本”
在其他模块中拉:go get github.com/xxxx/xxx/api/proto@latest 最后在go.mod文件中展示依赖的时候是非正式的,后面跟了一大串
比如:golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9
git tag -a 'api/proto/v0.1.2' -m “0.1.2版本”
在其他模块中拉:go get github.com/xxxx/xxx/api/proto@latest 最后在go.mod文件中展示依赖的时候是正式的,后面没有其他乱七八糟的东西
比如:gopkg.xxx.com/xxx v0.24.1