前景:
见上一篇文章(git一次错误提交的回滚(不同分支因merge-需回滚))
注意:revert一时爽,但是现在要把release代码合回来(sit已合并release),但是sit当时revert那一部分代码始终找不回来了(如果提交少还可以挨个cherry pick)
方式一:最新代码覆盖
针对:revert的代码多,已经不好逆转或挨个找回
解决办法:
- dev分支最新代码拉一份,单独放一个文件夹(用于后面覆盖)
- dev拉一个临时分支(dev-mergeRelease),然后如图Merge Changes合并release分支(这时候会把之前revert的合并过来,会丢代码)
- 把第2步代码全部删掉(必须保留.git文件夹),然后把第一步dev的全新代码各模块文件夹拷贝进去,应该没冲突,直接push进去
- 后台会看到很多Commits,但是Changes是0——这就对了代码覆盖回来了,提交记录也有了(主要还是解决中途的revert丢失的代码)
- 若release之前代码保持合并到dev,到此完成(或者把release新提交的cherry pick回来就行了)
方式二: 找回挨个cherry pick
针对:revert的代码很少,就把丢的那部分代码挨个cherry pick回来
方式三:负负得正
针对:revert之后代码无变动或提交,把master revert的代码再次revert,形成新的commit,这样就可以进行合并了。