0

我必须清理一个远程/公共分支“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 的提交)合并,有时我不得不解决冲突 - 女巫可能需要我很多天。

任何想法如何处理它。

4

1 回答 1

0

听起来最终并没有真​​正重现与您在提交(many commits reflecting state after c237)时在分支中相同的状态。如果你这样做了,你不应该得到任何合并冲突。OLDc237

这意味着您需要git diff c237在尝试 rebase 之前执行一个操作,以便查看您错过了什么。

于 2014-09-27T22:18:16.440 回答