2017-12-27 492 views
0

我想将我的特性分支合并到develop分支上。然而,其中一个提交恢复了我现在想要的提交。包括恢复提交的Rebase

 
* develop - merge revert PR 
|\ 
| * Revert undesired merge 
|/ 
* Merge (undesired) 
|\ 
| * commit A 
|/ 
| 
... (lots of commits) 
| 
| * feature - commit B 
| * commit A' 
|/ 
* 

git rebase -i develop不显示提交A'。我尝试过各种选项(-p,--keep-empty,-f),但没有成功。

我如何结束了

 
    * feature - commit B 
    * commit A' 
/
* develop - merge revert PR 

没有单独挑肥拣瘦? (不止两个提交 - 这个例子简化了。)

(注意:最近的提交是在图的顶部,还要注意A和A'具有相同的内容;也就是说,它们应用相同的更改。)

+0

第一个图不清楚。 '功能'与'develop'有关。正如你所画的那样,我会认为它们是独立的树,恰好在同一个数据库中,但从你所说的我对此表示怀疑。无论如何,它看起来并不像“A”在“开发”的历史中的任何地方,那么为什么*会有一个选项让它在“开发”的基础上出现? –

+0

@MarkAdelsberger我修改了图表来显示关系。 – TrueWill

+0

我会建议不要恢复合并。只需重置。 – evolutionxbox

回答

2

您需要帮助rebase从尚未合并“提交A”的时间点算出其待办事项列表。

相反的git rebase -i develop,请尝试:

git rebase -i undesired~ --onto develop 

...其中undesired或者是在一个分支或恢复合并的SHA提交。

另一种选择是:

git rebase -i HEAD~2 --onto develop 

...意为 “最后的两次提交重订到develop”。

+0

第一个选项完美运作。谢谢!! – TrueWill