首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从中间移除git合并

从中间移除git合并
EN

Stack Overflow用户
提问于 2018-03-31 17:53:02
回答 2查看 881关注 0票数 4

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

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

从这里恢复的通常方法是在这些合并之前将主服务器重置为最后一个好的提交,然后重放每一个合并(在重基和正确压缩之后)来合并它们。

一个更好的方法可能是使用git rebase --onto命令在坏的合并修复之后重放好的合并。然而,我一直无法找到正确的方法来做这件事。我所做的是:

  1. 将主分支重置为提交,以进行最后一次良好的合并。
  2. 在重基分支的顶部重基坏提交(不是压缩-重基)。
  3. 合并重基分支上的压缩-重基提交。
  4. 对于任何其他错误提交,请重复此过程。
  5. 最后,以与步骤2-3相同的方式重播所有好的合并。

在步骤5中,我尝试使用git rebase -ip --onto <last_good_commit>重放我的好合并,但这似乎是将父母的顺序交换为提交。有人有一个很好的方法来改进我的工作流程,这样我就不用手动重播每一个合并了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-04 02:18:38

VonC的回答几乎是正确的。我必须将rebase命令修改为git rebase -ipm --onto <last_good_commit> <first> <yourBranchToReplay>,它将所有剩余的合并正确地基于固定的合并。

票数 0
EN

Stack Overflow用户

发布于 2018-04-03 22:05:23

git rebase -ip --onto <last_good_commit>似乎不完整。

它应该是:

代码语言:javascript
复制
git rebase -imp --onto <last_good_commit> <first> <yourBranchToReplay>

如果您签出了"yourBranchToReplay",则可以省略最后一个参数。

但是您不能省略<first>,这是要在<last_good_commit>之上重放的分支的第一个提交。

正如OP所指出的,)很重要。

我也是 --preserve-merge option of Git 1.8.5 back in 2013

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49590731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档