1. 打v1.1.0tag
git tag v1.1.0
2.上传至服务端
git push --tags
3.查看打的tag
git tag
4.删除tag
git push origin --delete 0.1.0
// 当我们删除一个分支,而打的tag名称和分支名称一样时,会报错。
error: dst refspec 0.1.0 matches more than one.
error: failed to push some refs to 'git@github.com:TiFG/juice.git'
出现这个错误的原因是在于远程Git服务器上名称为0.1.0的有两个对象:一个是tag,一个是分支;也就是说tag分支和branch分支同名了,
在执行 git push origin --delete 0.1.0这个命令时Git服务器不知道要删除哪个。
解决办法:
解决办法自然是明确告诉Git服务器要删除的是tag 还是 分支。
删除分支:
git push origin :refs/heads/0.1.0
删除Tag:
git push origin :refs/tags/0.1.0
日常开发中,在命名分支和tag的时候应当使用不同的名称,尽量避免重名。
5.git 回滚到tag版本 并提交远程仓库
最近工作中遇到了git需要回滚的问题,操作了几次后发现并不是以前用svn那样的概念,想用本地的仓库的代码 reset 以后 覆盖是不可行的,
经过查了资料和同事的帮忙,终于是可以了,现在把整个操作步骤记录下来,FYI!
我的tag是 v.1.7
1.检出tag:
git checkout v.1.7
2.将tag分支的备份一下 分支名:dev-bak
git branch dev-bak
3.检出你要还原的分支 我这里是 developer
git checkout developer
4.对即将还原的分支 developer 进行备份 分支名:developer-bak
git branch developer-bak
5.切换到备份的tag分支
git checkout dev-bak
6.删除原 developer 分支
git branch -d developer
7.将dev-bak 分支检出为developer分支
git branch developer
8.将本地的developer 分支提交远程仓库。
git push origin :developer