Rebase包括恢复提交

时间:2017-12-27 16:51:10

标签: git rebase git-rebase git-revert

我想将我的功能分支合并到开发分支上。但是,其中一个提交还原了我现在想要的提交。

* 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'具有相同的内容;也就是说,它们应用相同的更改。)

1 个答案:

答案 0 :(得分:2)

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

而不是git rebase -i develop,请尝试:

git rebase -i undesired~ --onto develop

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

另一种选择是:

git rebase -i HEAD~2 --onto develop

...意思是“将最后两次提交改为develop”。