我们可以从优秀的项目身上借鉴经验,让我们来看一个案例,前段时间( 4 月 15 日),以太坊柏林硬分叉,openethereum 节点进行 Berlin hotfix 的一个案例:
-
https://github.com/openethereum/openethereum/pull/366-
https://github.com/openethereum/openethereum/commits/dev我们观看上面两个链接的 git 工作流,可以看到他的 hotfix 流程大致是这样的:
- Merge branch 'berlin_hotfix' into release/v3.2.1
- Merge branch 'release/v3.2.x' into main
- Merge branch 'main' into dev
从这里相信你能看出,当出现一个紧急严重的 bug 的时候,你首先应该做的是第一时间、最短时间解决线上的漏洞,抛开一切繁琐的影响你解决问题的因素(不要再去想其他分支的事情了,你已经没有时间了)。
你首先应该从当前发布版本切出一个 hotfix 分支,修复后,第一时间将该修补提交合并到新的发布版本,这时候你已经完成了你最应该做的,最紧急的事情,接下来,你就可以按部就班的,逐步将该修复合并到其他分支。
当然,我们现实项目中,可能少了像开源项目有发布版本这个 tag,我们的线上可能就是 master 分支,但是原理是一样的。