git操作修改历史版本tag标签的代码,并发布新标签

发布时间 2023-09-08 15:17:56作者: Sherlock先生

场景:

当项目已经迭代多个版本之后,突然发现旧版本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, 后续步骤和上述雷同