如何从通过Git在子分支中删除的祖先恢复更改?

如何从通过Git在子分支中删除的祖先恢复更改?,git,Git,我创建了一个新功能。我把它提交给代码审查,要求我把它分成两部分,然后重新提交。我现在完成的第一部分是新的API。第二部分是将新API集成到现有代码中。以下是我的git回购目前的样子: o-o-A-o-o-o-o-o-o-o-o-o-o-B | | Original API with Feature Feature Integration Removed A是我最初从事的分支B是我创

我创建了一个新功能。我把它提交给代码审查,要求我把它分成两部分,然后重新提交。我现在完成的第一部分是新的API。第二部分是将新API集成到现有代码中。以下是我的git回购目前的样子:

    o-o-A-o-o-o-o-o-o-o-o-o-o-B
        |                     |
    Original          API with Feature
     Feature        Integration Removed
A
是我最初从事的分支
B
是我创建的一个分支,在这里我删除了集成代码,只留下了新特性的API

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


使问题复杂化的是,API在
B
完成时确实发生了一些变化。我主要想还原
A
,这样我就可以记住新功能在代码中的集成位置,并且可以根据需要进行更新。

根据您的描述,我想我可以选择两种方式之一。这完全取决于
A
B
之间做了哪些更改/如何更改,因此如果不查看代码,很难说什么最有效

选项一是从
a
创建一个新的分支(比如
C
),然后从
a
B
之间的提交中选择所需的API更改


选项二是撤消
A
B
之间的所有删除操作(您现在想要恢复)。第一件事是创建一个备份分支,这样无论你怎么搞砸,都可以简单地倒带并重新开始(例如,
git branch B.mybackup B
)。然后做一个交互式的rebase(例如,git checkout B;git rebase-i A),在这里删除删除您想要返回的代码的提交。

从您的描述中,我想我可以选择两种方法之一。这完全取决于
A
B
之间做了哪些更改/如何更改,因此如果不查看代码,很难说什么最有效

选项一是从
a
创建一个新的分支(比如
C
),然后从
a
B
之间的提交中选择所需的API更改

选项二是撤消
A
B
之间的所有删除操作(您现在想要恢复)。第一件事是创建一个备份分支,这样无论你怎么搞砸,都可以简单地倒带并重新开始(例如,
git branch B.mybackup B
)。然后执行一个交互式的rebase(例如,
git checkout B;git rebase-ia
),在这里删除删除您想要返回的代码的提交