我们维护一个具有合并工作流的分支结构。因此,我们的主分支提交层次结构如下所示。

但是,由于我们使用的是Gitlab社区版本,它不会压缩和重新定位合并,有时开发人员忘记执行其中的一个或另一个,合并提交就像这样。

从这里恢复的通常方法是在这些合并之前将主服务器重置为最后一个好的提交,然后重放每一个合并(在重基和正确压缩之后)来合并它们。
一个更好的方法可能是使用git rebase --onto命令在坏的合并修复之后重放好的合并。然而,我一直无法找到正确的方法来做这件事。我所做的是:
在步骤5中,我尝试使用git rebase -ip --onto <last_good_commit>重放我的好合并,但这似乎是将父母的顺序交换为提交。有人有一个很好的方法来改进我的工作流程,这样我就不用手动重播每一个合并了吗?
发布于 2018-04-04 02:18:38
VonC的回答几乎是正确的。我必须将rebase命令修改为git rebase -ipm --onto <last_good_commit> <first> <yourBranchToReplay>,它将所有剩余的合并正确地基于固定的合并。
发布于 2018-04-03 22:05:23
git rebase -ip --onto <last_good_commit>似乎不完整。
它应该是:
git rebase -imp --onto <last_good_commit> <first> <yourBranchToReplay>如果您签出了"yourBranchToReplay",则可以省略最后一个参数。
但是您不能省略<first>,这是要在<last_good_commit>之上重放的分支的第一个提交。
正如OP所指出的,)很重要。
https://stackoverflow.com/questions/49590731
复制相似问题