2016-02-04 44 views
3

通常情况下,如果我FUBAR合并到主线分支,并将它推,去到的命令是:git恢复合并提交中-m2的有效用例是什么?

$ git revert -m1 <merge commit SHA1> 

但是,我知道,revert还可以-m2工作。但是,这对我来说没有意义。如果回复发生在第一个父级,我无法想象这对主线分支会有什么影响。这是否基本上使第一个父母现在看起来像第二个父母,减去合并提交本身所做的任何更改?这实际上对树做了什么?是否有一组有用的用于这种返回的用例,指的是第二个父母?

第二个父项将始终是合并的特征/主题分支,所以我无法想象您想要将主线恢复到该状态。

回答

1

最常见的用例是当某人合并时,通常在git pull上。当您执行需要合并的拉时,您的本地提交是第一个父提交,而远程提交是第二个提交。所以我们假设开发者没有拉一段时间,所以他的本地分支是2032落后origin。开发人员进行单一提交,以某种方式拉取合并,并推送。如果我们恢复与-m1的拙劣合并,我们将失去所有20次提交的更改,并且必须全部选中。通过使用-m2,我们只是丢失了他单一提交的更改,然后只要我们愿意,樱桃就可以选择。

+0

我更惊讶合并期间拉合作的方式。我希望合并看起来与功能分支合并相同,因为它们在技术上是相同的。 –

+2

当您在功能分支中合并时,您在主分支上时这样做,并且它是移动的主分支;这是什么使它成为主要的父母。当你做一个git pull时,你在你的本地分支上,它是你的本地分支移动的,所以它是主要的父分支。 –