通过硬重置为合并中获得的提交来擦除合并提交?

时间:2019-07-12 18:48:47

标签: git github merge commit

合并之前的历史记录看起来像A -> B -> C

我正在合并的分支看起来像A -> B -> C -> D -> E,即该分支与我的历史相同,但是有两个新的提交

我只是想要那两个提交,所以我将该分支合并到我的分支中。合并后,我的分支看起来像A -> B -> C -> D -> E -> F,其中F是合并提交。

在我的历史记录中我不希望合并提交F,因此我很难重新设置为提交E ...

等等,什么?

我通过硬重置为在合并提交中获得的提交来删除了合并提交...?那可能吗?我认为合并提交本身就是适用于您从合并中获得的任何新提交的东西,因此,如果您取消了合并提交(如我所做的那样),那么您将失去合并提交所做的所有事情,即您将丢失所有通过合并获得的承诺。

这不是合并提交的工作原理吗?

1 个答案:

答案 0 :(得分:2)

如果您的存储库设置了merge.ff false,或者如果您以其他方式在合并中指定了--no-ff,即使不是绝对必要的,Git也会记录一次合并

你必须

A---B---C-------F    master
         \     /
          D---E

其中F内容与E内容相同。有时候,您需要这样做,例如,在生产历史记录中,通过一系列这样的合并来记录实际投入生产的内容通常很方便,任何知道惯例的人都可以看到D从未投入生产,它是系列的一部分。

因此,当您从git reset --hardE时,您删除了合并记录而根本不更改内容,并且所得到的历史记录正是快速合并所能为您带来的。< / p>