在合并之上移动提交

时间:2012-06-19 12:12:51

标签: git

在git中,我有2个提交和分支合并,已经重新定位,看起来像这样

7
6_
  5
  4
3_|
2
1

合并是用no-ff完成的。

我的客户端不想推出提交1和2,所以即时尝试将其重新设置为这样

1
2
7
6_
  5
  4
3_|

这是可取的,因为那时我可以分支提交7,这是我的生产版本。

rebase -i XXXX

使整个事情变得扁平化并且存在大量冲突。因为我试图准备一个生产推广,我不想有冲突,因为代码将不得不回到测试。

当我这样做时

rebase -i -p XXXXXX

它正确地移动了提交1和2,但它删除了合并以及与之关联的4周工作。我是怎么做到这一点的?

1 个答案:

答案 0 :(得分:3)

从两个提交中创建一个补丁,并以反向模式应用它们。

亲:

  1. 简单的解决方案
  2. 非常安全,具体取决于更改的大小
  3. 骗局:

    1. 将提交保留在提交历史记录中
    2. 根据两次提交中代码的更改量(即对修订版3-7中发生的代码的更改),反向应用将不起作用
    3. 另一个黑客将是在没有最后7次修订的情况下结账。然后为修订3-7创建补丁并应用它们。应该给你相同的结果和干净的提交历史。

      但在这两种情况下,我都很谨慎,因为你在rebase期间遇到了很多冲突。