GIT公共分支清理成新分支

时间:2014-09-27 22:11:32

标签: git version-control git-merge git-rebase git-cherry-pick

我必须清理一个远程/公共分支“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)之后所做的所有更改改为“新”

新预期 - 简化图

(...) -> c234 -> c236 -> (many commits reflecting state after c237) -> c238 -> c239 -> (...) -> HEAD

我在这个git-rebase -i之前尝试了但是因为这是一个公共回购,它包含很多(有近400个提交到HEAD的OLD)合并,并且我不时要解决冲突 - 女巫可以带我很多天。

任何想法如何处理它。

1 个答案:

答案 0 :(得分:0)

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

这意味着您需要在尝试使用rebase之前执行git diff c237以查看错过的内容。