如何通过Git恢复在子分支中删除的祖先的变化?

时间:2013-09-25 22:35:23

标签: git

我创建了一个新功能。我提交它进行代码审查,我被要求将其分成两部分,然后重新提交。我现在完成的第一篇文章是新的API。第二部分是将新API集成到现有代码中。这是我的git repo目前的样子:

    o-o-A-o-o-o-o-o-o-o-o-o-o-B
        |                     |
    Original          API with Feature
     Feature        Integration Removed

A是我最初工作的分支。 B是我创建的一个分支,我删除了集成代码,只留下了新功能的API。

我现在想要恢复集成。 AB之间的大多数中间步骤都是删除我现在想要带回来的代码。

为了使问题复杂化,API在B完成时确实发生了一些变化。我主要想要恢复A,以便我能记住代码中新功能的集成位置,并且我可以根据需要更新内容。

1 个答案:

答案 0 :(得分:1)

根据你的描述,我想我会选择其中一种方式。这取决于AB之间进行了哪些更改/如何更改,因此很难说在没有看到代码的情况下哪些更有效。

选项一是从C创建一个新分支(比如A),然后在A和{{1}之间的提交中挑选您想要的API更改}。

选项二是撤消BA之间的所有删除(您现在想要的删除)。首先要创建一个备份分支,这样无论你如何搞砸,都很容易倒带并重新开始(例如B)。然后执行交互式rebase(例如git branch B.mybackup B),删除删除所需代码的提交。