git操作修改历史版本tag标签的代码,并发布新标签
场景:
当项目已经迭代多个版本之后,突然发现旧版本1.0.1出现了紧急bug,需要及时处理;
如果直接用新版本替换上去是存在极大隐患的,且时间来不及;
所以需要直接在1.0.1版本的基础上去修复bug,然后发布一个新版本去更新,这样才会更加稳妥,影响范围也会最小;
操作流程如下:
1. 列出所有标签
git tag
2. 发现1.0.1标签时的历史版本代码出现了问题,针对1.0.1标签时的代码建一个用于紧急处理bug的分支
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
3. 在bugfix-1.0.1分支上处理完bug,本地提交后, 再打一个新标签为1.0.1-bugfix
$ git tag v1.0.1-bugfix
4. 推送v1.0.1-bugfix新标签到远程仓库
git push --tags
5. 将bugfix-1.0.1分支合并到主分支
# 先切换到master主分支 $ git checkout master # 合并bugfix-1.0.1分支 $ git merge bugfix-1.0.1 # 推送到远程仓库 $ git push
6. 清理本地分支
git branch -D bugfix-1.0.1
注意, 此时tag为v1.0.1-bugfix即可修正后的tag版本, 但是这里有个问题, 就是之前已经打过tag的版本(v1.0.2, v1.0.3)是没有修复此bug的, 需要重新更新这两个tag版本,
方式1: 按上述方式依次修正v1.0.2和v1.0.3, 这样会重新产生两个版本: v1.0.2-bugfix, v1.0.3-bugfix
方式2: 按上述方式第3步在分支中处理完bug本地提交后, 将本地修正对应的tag及远程对应的tag删除掉, 然后按原tag名重新打tag, 后续步骤和上述雷同