平时开发中,一般仓库里有一个master分支或者dev分支,保存最新的代码成果,然后再拉一个子分支,例如:v0.0.1,一般是一个版本,拉一个分支。v0.0.1上线后,合并到master或者dev,删除v0.0.1分支,再拉第二个分支v0.0.2。
为什么要打tag?
- 一个版本中,有许多小任务,例如ABCDEF。如果做完F任务,发现D,E,F 。因为失误,都做错了。代码要回到C,如果整个分支还原,那么ABC也没有了,就只能回到tagc,所以每个小任务做完,要打一个tag。
- 发版后,改线上的bug,假设有bug1,bug2,因为bug2的改动,导致之前的bug1又复现了,只能先回退到bug1的代码。
下文命令均以GitLab代码仓库为例,Git版本2.29.2。git 官网文档
新版本已经上线,先把当前分支推送到远程服务器,然后就在当前分支开始打标签
git tag -a tag1.4.7 -m "1.4.7版本代码保存"
然后推送到远程:
git push origin tag1.4.7
完成后,Android Studio任然显示的是1.4.7分支。
显示所有tag,查看是否推送成功:
git tag
如果想切换到某一个指定的Tag,例如切换到名为“tag1.4.6”:
git checkout tag1.4.6
稍微等待一会儿,Android stduio才会切换。
根据Tag1.4.6,生成新的分支1.4.6B,并且切换到分支1.4.6B
git branch 1.4.6B tag1.4.6 git checkout 1.4.6B
让子弹飞一会儿,Android stduio才会切换。
如果分支名称搞错了,需要修改分支名称,例如把v1.4.0改为tag1.4.0
git tag tag1.4.0 v1.4.0 git tag -d v1.4.0 git push origin tag1.4.0
如果分支名称与tag名称冲突,需要暂时删除远程tag,例如删除v1.4.6
git tag -d v1.4.6 git push origin :refs/tags/v1.4.6
不管删除tag的名称是什么, :refs/tags/ 都是不变的,例如删除标签xx:
git tag -d xx git push origin :refs/tags/xx