我必须清理一个远程/公共分支“OLD”,因为它包含一些错误/巨大的提交。
OLD - 简化图
(...) -> c234 -> c235(huge to fix) -> c236 -> c237(huge to fix) -> c238 -> c239 -> (...) -> HEAD
为此,我做了:
1)我创建了一个“新”分支。
2) 在第一次大提交之前返回 (c234)
3) Cherry 在最后一个大提交之前挑选所有提交。(c236)
4)然后我在最后一次大提交(c237)之后从“OLD”分支复制了所有更改的文件
5)最后创建了许多反映变化的小提交(c235,c237)
现在新 - 简化图
(...) -> c234 -> c236 -> (many commits reflecting state after c237) -> HEAD
现在在我看来,我必须将(c237)之后对“OLD”所做的所有更改重新设置为“NEW”顶部
新的预期 - 简化图
(...) -> c234 -> c236 -> (many commits reflecting state after c237) -> c238 -> c239 -> (...) -> HEAD
我在这个 git-rebase -i 之前尝试过,但因为这是一个公共回购,它包含许多(有近 400 次对 OLD 的 HEAD 的提交)合并,有时我不得不解决冲突 - 女巫可能需要我很多天。
任何想法如何处理它。